2016-11-13 34 views
5

假設我有一襯墊(玩笑)的文件。我想通過我發現他們多麼有趣來排序笑話。我的第一個想法是實現任何排序算法(最好是儘可能少的比較)並使比較算法得到我的輸入;我只是坐在那裏選擇它給我的每一對笑話中的哪一個更有趣。排序算法上的每一行不一致(非過渡)人的喜好

這有一個問題。我的笑話偏好不是全部訂單。它缺乏傳遞性。例如,我可能認爲B在呈現時比A更有趣,而C比B更有趣,但是當呈現A和C時,我發現A比C更有趣。如果「>」的意思是「比之更有趣, 「這意味着C> B和B> A確實是而不是意味着C> A.所有排序算法的正確性取決於此。

但它仍然似乎應該是排序笑話的列表中,這樣的一個在頂部是一個算法優於其他的笑話,和一個在底部是至少優於其它玩笑即使有個別例外。

我不知道如何給Google這個。是否有這種偏好排序的算法?答案here不適用,因爲它強制用戶的偏好是傳遞性的。

+0

推薦系統應工作 – iNan

+0

就可以完成你的榜樣?如果你有三個笑話A,B,C,並且你發現B比A更有趣,C比B更有趣,而且比C更有趣,你會希望在你的輸出中看到他們的順序是什麼?你也是唯一一個提供輸入的人嗎? –

+0

請注意,您的笑話偏好甚至不是部分訂單!我想知道是否有任何投票系統可以讓選民在沒有提供任何其他投票的情況下說「A> C」。如果是這樣,那麼你可以使用這些系統之一,只是假裝你的每個比較偏好來自不同的選民。 – ruakh

回答

3

如果你代表你的決定有向圖,其中一個笑話,是一個節點,每個有向邊指示一個笑話比另一種更好,那麼你可以通過構建如下的邊緣和每個訪問路徑檢索排序節點恰好一次。

這種類型的圖形的被稱爲比賽,並且該路徑是一個漢彌爾頓路徑。對你來說,我有個好消息,如果圖形是強連通的,哈密頓就證明存在。強連接意味着每個節點都可以從每個節點到達,服從邊緣的方向,所以不斷添加邊緣直到這是真實的。

錦標賽:https://en.wikipedia.org/wiki/Tournament_(graph_theory)

哈密爾頓路徑:https://en.wikipedia.org/wiki/Hamiltonian_path