CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1. Lý do chọn đề tài Một trong những lý do quan trọng nhất là xu hướng ngày càng gia tăng của thị trường thương mại điện tử. Với sự phát triển mạnh mẽ của công nghệ, người tiêu dùng ngày càng chuyển sang mua sắm trực tuyến để tiết kiệm thời gian và có trải nghiệm mua sắm thuận tiện hơn. Do đó, xây dựng một website bán hàng đáp ứng được nhu cầu ngày càng cao của khách hàng là một ưu tiên quan trọng.
Trong bối cảnh này, việc áp dụng thuật toán Hamming distance để gợi ý sản phẩm trở nên hết sức quan trọng và có ý nghĩa. Thuật toán này, ban đầu được phát triển trong lĩnh vực toán học và khoa học máy tính, nay được chú ý vì khả năng tìm kiếm dựa trên đặc tính tương đồng. Việc áp dụng Hamming distance vào hệ thống gợi ý sản phẩm giúp tối ưu hóa trải nghiệm người dùng bằng cách đề xuất những sản phẩm có đặc điểm tương tự với những sản phẩm mà khách hàng quan tâm. Bên cạnh đó, sự cạnh tranh cao trong thị trường thương mại điện tử đặt ra thách thức về việc phải cung cấp trải nghiệm mua sắm cá nhân hóa và khác biệt.
Việc sử dụng Hamming distance không chỉ là một cách tiếp cận tiên tiến mà còn mang lại lợi ích lớn về khả năng tùy chỉnh và hiệu suất gợi ý. Cuối cùng, dự án này không chỉ là một cơ hội để áp dụng kiến thức chuyên sâu về lập trình và thuật toán mà còn mang lại giá trị thực tế cao, cung cấp một hệ thống mua sắm trực tuyến hiện đại và thông minh. Sự kết hợp giữa xây dựng website bán hàng và áp dụng thuật toán Hamming distance hứa hẹn mang lại sự đổi mới và nâng cao chất lượng trong lĩnh vực thương mại điện tử ngày nay. Tóm lại, em chọn đề tài "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" ở đây là xây dựng website bán mỹ phẩm không chỉ mang lại nhiều lợi ích thực tế trong lĩnh vực quản lý bán hàng và tìm kiếm sản phẩm mà còn mở ra cơ hội để em có thể học hỏi và sáng tạo.
Mục tiêu của đề tài • Trình bày được các vấn đề liên quan đến ngôn ngữ PHP, cơ sở dữ liệu MySQL, mô hình MVC. • Tìm hiểu và vận dụng thuật toán Hamming Distance để gợi ý, lựa chọn các sản phẩm theo nhu cầu của khách hàng • Khảo sát thực trạng quản lý bán hàng của các cửa hàng hiện nay • Phân tích hệ thống chương trình bao gồm các giao diện, các chức năng nhằm đáp ứng nhu cầu người dùng • Triển khai và cài đặt chương trình 1. Giới hạn và phạm vi của đề tài • Xây dựng chương trình dựa vào ngôn ngữ lập trình PHP với Framework Laravel và cơ sở dữ liệu MySQL • Chương trình tập chung chức năng nghiệp vụ từ khảo sát thực trạng 1. Kết quả dự kiến đạt được • Tìm hiểu nhu cầu, nghiệp vụ của quản trị • Hiểu về ngôn ngữ lập trình PHP và áp dụng cho xây dựng website • Hoàn thành website bán hàng áp dụng thuật toán Hamming Distance để gợi ý với các tính năng như: • Admin: thực hiện các chức năng như quản trị hệ thống, quản lý người dùng, quản lý sản phẩm, quản lý danh mục, quản lý kho, quản lý đơn hàng.
• Nhân viên: có thể thực hiện các chức năng như cập nhật thông tin cá nhân, đăng ký, đăng nhập, và thực hiện một số chức năng theo dõi và cập nhật kho. • Hoàn thành báo cáo chi tiết đồ án tốt nghiệp. 2 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 2. Kiến thức về Hamming Distance 2.
Giới thiệu về thuật toán Hamming Distance ❖ Nguồn gốc Hamming Distance: Trong những năm của thập niên kỷ 1940, Hamming làm việc tại Bell Labs trên máy tính Bell Model V, một máy điện cơ (electromechanical) dùng rơ-le (relay- based), với tốc độ rất chậm, mấy giây đồng hồ một chu kỳ máy. Nhập liệu được cho vào máy bằng những cái thẻ đục lỗ (punch cards), và hầu như máy luôn luôn gây lỗi trong khi đọc. Trong những ngày làm việc trong tuần, những mã đặc biệt được dùng để tìm ra lỗi và mỗi khi tìm được, nó nhấp nháy đèn báo hiệu, báo cho người điều khiển biết để họ sửa, điều chỉnh máy lại. Trong thời gian ngoài giờ làm việc hoặc trong những ngày cuối tuần, khi người điều khiển máy không có mặt, mỗi khi có lỗi xảy ra, máy tính tự động bỏ qua chương trình đang chạy và chuyển sang công việc khác.
Hamming thường làm việc trong những ngày cuối tuần và ông càng ngày càng trở nên bực tức mỗi khi ông phải khởi động lại các chương trình ứng dụng từ đầu, do chất lượng kém, không đáng tin cậy (unreliability) của bộ máy đọc các thẻ đục lỗ. Mấy năm tiếp theo đó, ông dồn tâm lực vào việc xây dựng hằng loạt các thuật toán có hiệu quả cao để giải quyết vấn đề sửa lỗi. Năm 1950, ông đã công bố một phương pháp mà hiện nay được biết là Mã Hamming. Một số chương trình ứng dụng hiện thời vẫn còn sử dụng mã này của ông.
Hamming Distance là cái tên được đặt theo tên của Richard Hamming. ❖ Hamming Distance là gì? Hamming Distance là thước đo để so sánh hai chuỗi dữ liệu nhị phân. Khi so sánh hai chuỗi nhị phân có độ dài bằng nhau, khoảng cách Hamming là số vị trí bit trong đó hai bit khác nhau. 3 ❖ Ví dụ về thuật toán: Giả sử có hai chuỗi bit: • Chuỗi A: 0 1 1 1 1 • Chuỗi B: 0 0 1 1 0 Ta thấy: • Tại vị trí 1: Bit của A là 0, Bit của B là 0 (giống nhau).
• Tại vị trí 2: Bit của A là 1, Bit của B là 0 (khác nhau). • Tại vị trí 3: Bit của A là 1, Bit của B là 1 (giống nhau). • Tại vị trí 4: Bit của A là 1, Bit của B là 1 (giống nhau). • Tại vị trí 5: Bit của A là 1, Bit của B là 0 (khác nhau).
Số bit khác nhau là 2, kết luận Hamming Distance giữa chuỗi A và B là 2. ❖ Mục đích của Hamming Distance: Hamming Distance được sử dụng trong kỹ thuật viễn thông để tính số lượng các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước tính số lỗi xảy ra trong quá trình truyền thông, và vì thế, đôi khi, nó còn được gọi là khoảng cách tín hiệu (signal distance). Việc phân tích trọng số Hamming của các bit còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và mật mã học. Tuy vậy, khi so sánh các dãy ký tự có chiều dài khác nhau, hay các dãy ký tự có xu hướng không chỉ bị thay thế không thôi, mà còn bị ảnh hưởng bởi dữ liệu bị lồng thêm vào, hoặc bị xóa đi, phương pháp đo lường phức tạp hơn, như khoảng cách Levenshtein (Levenshtein distance) là phương pháp có tác dụng và thích hợp.
❖ Kiểm soát lỗi hiệu quả với Hamming Distance: • Hamming Distance trong kiểm soát lỗi: Các khái niệm trung tâm trong mã hóa để kiểm soát lỗi là ý tưởng về Hamming Distance. Hamming Distance giữa hai từ (có cùng kích thước) là số lượng khác biệt 4 giữa các bit tương ứng. Chúng ta biểu thị khoảng cách Hamming giữa hai từ x và y là d(x, y). Hamming Distance có thể dễ dàng tìm được nếu chúng ta áp dụng phép toán XOR trên hai từ và đếm số 1 trong kết quả.
Lưu ý khoảng cách Hamming là giá trị lớn hơn 0. Khoảng cách Hamming d(000, 011) là 2 vì 000 ⊕ 011 là 011 (hai số 1). Khoảng cách Hamming d(10101, 11110) là 3 vì 10101 ⊕ 11110 là 01011 (ba số 1). • Hamming Distance tối thiểu: Hamming Distance tối thiểu là khoảng cách Hamming nhỏ nhất giữa tất cả các cặp có thể.
Chúng tôi sử dụng "dmin" để xác định khoảng cách Hamming tối thiểu trong sơ đồ mã hóa. Để tìm giá trị này, chúng tôi tìm khoảng cách Hamming giữa tất cả các từ và chọn giá trị nhỏ nhất. • Khoảng cách và lỗi Hamming: Khi một từ mã bị hỏng trong quá trình truyền, khoảng cách Hamming giữa các từ mã được gửi và nhận là số bit bị ảnh hưởng bởi lỗi. Nói cách khác, khoảng cách Hamming giữa từ mã nhận được và từ mã gửi đi là số bit bị hỏng trong quá trình truyền.
Ví dụ: nếu từ mã 00000 được gửi và 01101 được nhận thì có 3 bit bị lỗi và khoảng cách Hamming giữa hai bit là d(00000, 01101) =3. • Khoảng cách tối thiểu để phát hiện lỗi: Để tìm khoảng cách Hamming tối thiểu trong một mã nếu chúng ta muốn có thể phát hiện tối đa S lỗi. Nếu S lỗi xảy ra trong quá trình truyền, khoảng cách Hamming giữa từ mã đã gửi và từ mã nhận được là S. Nếu mã phát hiện tối đa S lỗi, khoảng cách tối thiểu giữa các mã hợp lệ phải là s + 1, sao cho mã nhận được từ mã không khớp với từ mã hợp lệ.
• Khoảng cách tối thiểu để sửa lỗi: Việc sửa lỗi phức tạp hơn việc phát hiện lỗi và cần có một quyết định. Khi từ mã nhận được không phải là từ mã hợp lệ, người nhận cần quyết 5 định từ mã hợp lệ nào thực sự được gửi. Quyết định này dựa trên khái niệm lãnh thổ, một khu vực độc quyền bao quanh từ mã. Mỗi từ mã hợp lệ có lãnh thổ riêng.
Sử dụng phương pháp hình học để xác định từng lãnh thổ. Chúng ta giả định rằng mỗi từ mã hợp lệ có một lãnh thổ hình tròn có bán kính t và từ mã hợp lệ nằm ở trung tâm. Ví dụ: giả sử một từ mã x bị hỏng t bit hoặc ít hơn. Khi đó từ mã bị hỏng này nằm ở bên trong hoặc trên chu vi của vòng tròn này.
Nếu người nhận nhận được một từ mã thuộc lãnh thổ này, nó sẽ quyết định rằng từ mã ban đầu là từ mã ở giữa. Lưu ý rằng chúng tôi giả định rằng chỉ có tối đa t lỗi xảy ra; nếu không thì quyết định đó là sai. Hình dưới đây cho thấy cách giải thích hình học này. Một số văn bản sử dụng hình cầu để hiển thị khoảng cách giữa tất cả các mã khối hợp lệ.
Ví dụ trong Hamming Distance 2. Hamming Distance trong Laravel ❖ Hàm Hamming Distance trong PHP gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int Trong đó: • $num1, $num2: thuộc kiểu dữ liệu: đối tượng GMP (GMP – GNU Multiple Precision object), số nguyên (Int), chuỗi số (Numeric String).