cuốn sách gpt4 ai đã làm

algorithm - 拥有/想要列表匹配算法

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:37:26 27 4
mua khóa gpt4 Nike

Thuật toán khớp danh sách có/muốn

Tôi đang triển khai hệ thống giao dịch phần tử trên một trang web có lưu lượng truy cập cao. Tôi có một số lượng lớn người dùng, mỗi người trong số họ duy trì một danh sách CÓ và một danh sách MUỐN cho một số dự án cụ thể. Tôi đang tìm kiếm một thuật toán cho phép tôi đề xuất các đối tác thương mại một cách hiệu quả dựa trên sự phù hợp CÓ và MUỐN của bạn với họ. Lý tưởng nhất là tôi muốn tìm đối tác có tiềm năng giao dịch lẫn nhau cao nhất (tức là tôi có rất nhiều thứ bạn muốn, bạn có rất nhiều thứ tôi muốn). Tôi không cần tìm cặp tiềm năng cao nhất toàn cầu (nghe có vẻ khó), chỉ cần tìm cặp tiềm năng cao nhất cho một người dùng nhất định (hoặc thậm chí chỉ一些cặp tiềm năng cao, thay vì cực đại toàn cầu).

例子:

Người dùng 1 CÓ A,C MUỐN B,DNgười dùng 2 CÓ MUỐN ANgười dùng 3 CÓ A,B,D MUỐN CNgười dùng 1 truy cập trang web và nhấp vào nút có nội dung "Tìm đối tác thương mại" và kết quả được xếp hạng cao nhất là Người dùng 3, theo sau là Người dùng 2.

Một nguồn phức tạp khác là các mặt hàng có giá trị khác nhau và tôi muốn khớp giao dịch có giá trị cao nhất có thể chứ không phải số lượng khớp tối đa giữa hai nhà giao dịch. Vì vậy, trong ví dụ trên, nếu tất cả các mục có giá trị là 1, nhưng cả A và D đều có giá trị là 10, thì Người dùng1 hiện khớp với Người dùng2 ở trên Người dùng3.

Cách đơn giản để thực hiện việc này là tính giá trị giao dịch tối đa giữa người dùng đang tìm kiếm đối tác và tất cả người dùng khác trong cơ sở dữ liệu. Tôi đang nghĩ đến một số bảng tra cứu về những việc cần làm, tôi có thể làm tốt hơn. Tôi đã thử tìm kiếm trên Google vì đây có vẻ là một vấn đề kinh điển nhưng tôi không biết tên của nó.

Bất cứ ai có thể đề nghị một giải pháp tốt cho vấn đề này? Tôi đã thấy các trang web như Magic Online Trading League dường như giải quyết được vấn đề này trong thời gian thực.

câu trả lời hay nhất

bạn có thể O(n*k^2) Hoàn thành thao tác này trong (n là số người, k là số yếu tố trung bình họ có/muốn)Bằng cách giữ một bảng băm (hoặc, trong cơ sở dữ liệu, một chỉ mục) của tất cả những người có và muốn một phần tử nhất định, sau đó cho điểm cho tất cả những người có phần tử mà người dùng hiện tại muốn và muốn phần tử mà người dùng hiện tại người dùng có. Hiển thị 10 hoặc 20 điểm cao nhất.


[编辑]Ví dụ về cách triển khai điều này trong SQL:

-- Nhận điểm cho mong muốn của @userid
CHỌN UserHas.UserID, SUM(Items.Weight) NHƯ Điểm
TỪ Người dùng muốn
INNER THAM GIA UserHas ON UserWants.ItemID = UserHas.ItemID
INNER THAM GIA Các mục TRÊN Items.ItemID = UserWants.ItemID
Ở ĐÂU UserWants.UserID = @userid
NHÓM THEO UserWants.UserID, UserHas.UserID

Điều này sẽ cung cấp cho bạn danh sách những người dùng khác và điểm số của họ dựa trên các mục họ có mà người dùng hiện tại muốn. Làm tương tự với những món đồ mà người dùng hiện tại có mà người khác muốn, sau đó kết hợp chúng theo một cách nào đó(thêm phân số hoặc bất cứ điều gì bạn muốn)Và đạt top 10.

Về thuật toán - thuật toán khớp danh sách có/muốn, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/3391639/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress