Lựa chọn trực tuyến giá rẻ với so sánh có trọng số


8

Giả sử chúng ta muốn tìm phần tử nhỏ nhất của tập , có phần tử được lập chỉ mục từ 1 đến n . Chúng tôi không có quyền truy cập vào các giá trị của các phần tử này, nhưng chúng tôi có thể so sánh bất kỳ hai phần tử nào của S để xem phần tử nào nhỏ hơn. Đối với bất kỳ chỉ số ij , có một liên quan đến chi phí C i , j để so sánh i th và j thứ yếu tố của S . Ma trận chi phí hoàn chỉnh C i , j được đưa ra trước cho chúng tôi.S1nSij Ci,jijSCi,j

Nó cũng được biết rằng sự so sánh là cần và đủ để tìm phần tử nhỏ nhất của S . Tuy nhiên, vì mỗi so sánh có thể có một chi phí khác nhau, chúng tôi cũng muốn giữ cho tổng chi phí so sánh càng nhỏ càng tốt.n1S

Có một thuật toán trực tuyến tìm thấy một chuỗi các so sánh về tổng chi phí nhỏ tìm thấy phần tử nhỏ nhất của không? S Không có thuật toán trực tuyến nào tìm thấy tập hợp so sánh với tổng chi phí tối thiểu , ngay cả khi , nhưng có lẽ có một thuật toán trực tuyến với tỷ lệ cạnh tranh nhỏ. n=3

Cụ thể, việc cho phép thuật toán trực tuyến thực hiện nhiều hơn so sánh có giúp ích không? Có tốt hơn để thực hiện một số so sánh giá rẻ "thêm" thay vì một vài so sánh đắt tiền?n1

Tôi đặc biệt quan tâm trong trường hợp , nơi d là một rời rạc số liệu trên tập S , và 0 d ( i , j ) k , cho tất cả i , j . Một thuật toán trực tuyến tối ưu vẫn là không thể trong cài đặt này.Ci,j=4d(i,j)dS0d(i,j)ki,j

Bất kỳ tài liệu tham khảo cho các vấn đề tương tự được đánh giá cao. Tôi không tìm kiếm ai đó để giải quyết vấn đề của mình (mặc dù một số ý tưởng có thể giúp ích và được đánh giá cao). Tôi chỉ muốn biết nếu vấn đề này được biết. (Tôi không thể tìm thấy bất cứ điều gì.)


1
Đợi đã, bây giờ tôi bối rối. Nếu bạn biết trước cả hai giá trị và chi phí so sánh theo cặp, thì việc giảm thiểu tổng chi phí so sánh tương đương với việc tính toán mức chi phí tối thiểu trong một biểu đồ hướng hoàn chỉnh theo chu kỳ. Nhưng nếu bạn không biết giá trị, nhưng chỉ phát hiện ra thứ tự của chúng bằng cách so sánh thực sự thực hiện, có không có chiến lược trực tuyến mà luôn tìm thấy phần tử nhỏ nhất sử dụng so sánh tổng chi phí tối thiểu; một kẻ thù thông minh có thể buộc bạn lãng phí tiền bạc. Phiên bản nào bạn quan tâm?
Jeffε

Ok, có lẽ tôi đã không làm cho câu hỏi của tôi đủ rõ ràng. Các giá trị không xác định và được "tiết lộ" bằng cách so sánh (không thực sự, nói rằng so sánh chỉ trả về nếu một đối tượng lớn hơn, bằng hoặc nhỏ hơn đối tượng khác). Vì vậy, tôi quan tâm đến phiên bản thứ hai. Btw chưa bao giờ nghe nói về chi phí tối thiểu. Ít nhất tôi đã học được một cái gì đó mới.
George

3
n=2

1
Chỉnh sửa cho rõ ràng (tôi hy vọng) và nhấn mạnh rằng đây là một câu hỏi thuật toán trực tuyến . Vui lòng kiểm tra xem tôi đã không làm hỏng quá nhiều vấn đề!
Jeffε

Điều này là tốt hơn nhiều! Cảm ơn rât nhiều. Tôi cũng nói thêm rằng khoảng cách giữa hai đối tượng bất kỳ được giới hạn ở trên bởi một số nguyên k.
George

Câu trả lời:


6

n=3ϕ=(5+1)/2ϕ

C1,2=0C1,3=1C2,3=ϕ

  • S1S2

  • S1>S2

  • S1S3

    • S1>S3
    • S2S3
    • S2<S3S2
    • 1+ϕ
    • S2<S3<S1
    • S1>S2S2<S3ϕ
  • S2S3

    • S3>S2S2
    • ϕ
    • S2<S1<S3
    • S1>S2S1<S31
  • 1+ϕϕ=ϕ1=ϕ

min{a+ca+b,a+b+ca+c}abcmin{a+ca+b,a+b+ca+c}a=0b=1c=ϕ

Cụ thể, nếu , thuật toán tốt nhất có thể có thể được buộc phải thực hiện cả ba so sánh.a+ca+b>a+b+ca+c


1
Đó là một bước đầu tiên rất tốt! Cảm ơn bạn đã quan tâm đến vấn đề của tôi (có vẻ như bạn thậm chí còn quan tâm hơn tôi :))
George

Quan sát tốt đẹp. Chỉ cần lưu ý, phân tích này giả định một thuật toán xác định trừ khi tôi nhầm.
Tsuyoshi Ito

Vâng đúng vậy. Một thuật toán ngẫu nhiên có thể làm tốt hơn (trong kỳ vọng, chống lại một đối thủ lãng quên).
Jeffε

-3

Bắt đầu là:

  1. Sắp xếp tất cả các yếu tố của ma trận chi phí C của bạn
  2. Thực hiện so sánh chi phí thấp nhất trước tiên, đặt người thua cuộc vào tập hợp NOPE
  3. Đối với mỗi so sánh chi phí tiếp theo, nếu một trong hai yếu tố nằm trong NOPE, không thực hiện so sánh
  4. Bạn phải tiếp tục cho đến khi tất cả trừ một yếu tố nằm trong NOPE, đó là so sánh n-1.

Đây có phải là một thuật toán phong nha? Phụ thuộc vào chi phí tương đối của việc sắp xếp C so với thực hiện so sánh trong S:

  • Đối với bất kỳ mục nào bạn đang đánh giá, nếu có một so sánh rẻ hơn so với mục hiện tại đang được thực hiện, thì mục đó đã được thực hiện và mục hiện tại đã thắng so sánh đó
  • Chi phí == n ^ 2 so sánh số để sắp xếp C, cộng với n-1 so sánh S

-t.


1
Vâng, đây là một thuật toán tham lam rõ ràng. Không, chi phí là tổng chi phí của các phép so sánh riêng được thực hiện bởi thuật toán, như được đưa ra bởi ma trận . Ci,j
Jeffε

Cảm ơn! Tôi đã nghĩ về cách tiếp cận tham lam rõ ràng này (đó là những gì tôi sẽ sử dụng nếu không có gì tốt hơn xuất hiện). Vấn đề là nếu nó đưa ra bất kỳ đảm bảo về tỷ lệ cạnh tranh.
George

@JeffE - vâng, chi phí là so sánh n-1 với chi phí liên quan của họ, nhưng cũng là chi phí sắp xếp ma trận chi phí
Tristan Reid

@George B. - Nếu chi phí sắp xếp C tương đối rẻ, tôi không nghĩ có thuật toán nào tốt hơn để làm việc này. Thuật toán này sẽ luôn thực hiện chính xác các so sánh n-1, không bao giờ 1 hoặc ít hơn 1. Các so sánh mà nó thực hiện sẽ luôn là những cái rẻ nhất n-1. Tôi nghĩ rằng lòng tham là tốt ...
Tristan Reid

Không, nó sẽ không luôn là những cái rẻ nhất. Ví dụ: hãy để A> B> C và = 1, = 2 và = 1. Nếu trước tiên bạn so sánh và và sau đó so sánh với tổng chi phí sẽ là 4 ^ 1 + 4 ^ 2 = 20, trong khi nếu trước tiên bạn so sánh với và sau đó với thì chi phí sẽ là 4 ^ 1 + 4 ^ 1 = 8, vì vậy thuật toán tham lam như vậy sẽ không làm ở đây. Và vâng, sắp xếp C không phải là vấn đề. d(A,B)d(A,C)d(B,C)ABACBCAB
George
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.