我正在構建一個程序,允許用戶優化他們的雜貨店購物,以便他們可以使用最少的原料製作大多數食譜。什麼是下一個最佳配料?
該程序的功能之一是我稱之爲「下一個最佳原料」或NBI的功能。例如,如果您已經有鹽,油和迷迭香,那麼NBI會解開最多的食譜?
假設答案是牛肉。如果你購買牛肉,你將能夠創造更多的新食譜,如果你買了其他任何成分。
購買牛肉後,下一個應添加的下一個最佳原料是什麼?等等。
該功能將允許用戶輸入任意數量的起始成分(包括零)。所以有人可以從0,3,甚至50個成分開始。接下來應該添加什麼?
我正在使用一個食譜數據庫(全部約500K食譜)來編譯結果。
我可以繪製出寫出特定算法的個人步驟。但是我需要幫助編寫更通用的算法。
這裏的一個特定的算法:
用戶在3種成分A,B,和C
隔離使用利用A + B + C + BLANK所有4成分配方進入。請注意頻率最高的空白。使用A + B + BLANK ... A + C + BLANK ... B + C + BLANK分離所有三種成分的食譜。請注意頻率最高的空白。
分離所有使用A + BLANK ... .B + BLANK ... C + BLANK的2成分食譜。請注意頻率最高的空白。
分離所有簡單使用BLANK的單料配方。請注意頻率最高的空白。
用最高的TOTAL頻率計算BLANK。這是下一個最佳原料。
但我需要一種方式來編寫一個更通用的算法,當用戶輸入N個成分(任何從0成分到100)。
我可以用簡單的英語寫出規則 - 但我的程序員需要一種使用編碼邏輯編寫通用規則的方法。
這裏是簡單的英語。
當用戶搜索N個成分(包括零)時,立即忽略任何需要N + 2成分或更多成分的食譜。然後分離所有剩餘食譜,使用全部,部分或不含這些成分,以便有1個(且只有1個)「未檢測」成分的空缺槽。
記錄所有「未檢出」成分的頻率。無論哪種「未檢測」成分的頻率最高,都成爲下一個最佳原料。
目標是使此搜索功能準確(或與我的數據庫一樣準確)並且快速。一些成分很容易。但是當看着10種以上的食材時,它可能會減慢一點。
有什麼想法?
這是一個編程問題(我懷疑這個問題已經得到很好的研究)。它屬於stackoverflow.se。我想,存儲數據庫的一些索引將使它變得簡單。 –
請注意,下一個最佳配料加上下一個最佳配料不一定會像一對不同的配料一樣好,因爲這兩個配料在連續推薦時都不會同時推薦。爲了將這個問題轉化爲數學,假設成分是整數,並且想要最大化它們產生的子集產品的數量,但同時最小化整數的大小。 – Waffle
謝謝你們。我在數據庫部分發布了我的問題。乾杯。 – George