我正在用python進行編程。建立一組組合的最高分
我有以下形式的數據:該數據與得分有關的
(A, B, C, D, E, F, G, H, I)
段,例如:
scores:
(A, B, C, D) = .99
(A, B, C, E) = .77
(A, B, E) = .66
(G,) = 1
(I,) = .03
(H, I) = .55
(I, H) = .15
(E, F, G) = .79
(B,) = .93
(A, C) = .46
(D,) = .23
(D, F, G) = .6
(F, G, H) = .34
(H,) = .09
(Y, Z) = 1
我們可以得到一個得分這個數據如下:
A B C E + D F G + H I = .77 * .6 * .55 = 0.2541
另一種可能是:
A B C D + E F G + H + I = .99 * .79 * .09 * .03 = 0.00211167
所以,第一個組合給出了更高的分數。
我希望編寫一個算法來確定最高分數以上的數據。數據成員不應該重複多次。換句話說:
A B C E + E F G + D + H I
無效。你會如何推薦我去解決這個問題?
感謝,
巴里
編輯: 我要澄清的是(H,I)=(I,H)和(I,H)是不是子片段爲ABCDEFGHI,但是ABIHJ的子部分。 我應該提及的另一件事是分數是一個非常大的集合(百萬),我們計算得分的分段的平均長度大約爲10個。此外,我計算得分的方式可能會在未來。也許我想添加子段並取平均值而不是偶數倍,誰知道......因此,分離計算可能組合的代碼可能更好,因爲計算得分的實際計算可能更好。目前,我傾向於認爲itertools.combinations可能會提供一個很好的起點。
推測上述數據的最佳分數爲0.430155? – Neil 2011-12-26 21:27:10