[英]Algorithm to differentiate n pictures
假設您給出長度為k的N位數組。 意味着每個向量v i的形式為{1,0,0,1 ... 1}(k個分量)等。
現在我想找到最小索引集S = {I 0 ,I 1 ...,I q-1 },其中0 <= I i <= k-1這樣
當在S上評估v i時,其給出二進制序列{v i [I 0 ],v i [I 1 ] ..}對於每個v i是唯一的。
因此,例如,如果有64個向量{v 0 ... v 63 },則最小索引集| S | 可以有6號給定v 我很長很不一樣。 因為2 6 = 64。
應用程序是給定一個固定的黑白圖片列表,0 ... 63,你知道輸入將是那些圖片之一,圖片足夠大,你只需要檢查輸入的6個像素來弄清楚它是哪張照片。
這個問題似乎應該已經證明NP或在某處解決了。
任何提示? 謝謝。
我無法找到與此相對應的NP難題,盡管我確定它是NP難的。 我希望有人可以挖出一個,因為我認為我已經遇到了幾個不同的偽裝問題。 如果沒有,如果我有時間,我可能會稍后嘗試減少。
每列將圖像集分成兩部分; 我們從包含所有圖像的單個集合開始,我們的目標是到達一個分區,其中每個部分(在分區中設置)由單個圖像組成,並且使用盡可能少的列。
一種方法是制作和解決最小集合覆蓋問題 ,其中地面集由所有k(k-1)/ 2 對圖像組成,並且對於每列v_r,我們制作由該列的所有圖像對組成的集合區分 - 即所有圖像對(i,j)使得v_r [i]!= v_r [j]。 然后,任何封面都會將每個圖像與其他所有圖像區分開來,並且最小尺寸的封面將使用盡可能少的列來完成。
實際解決此集合覆蓋問題的最快方法可能是通過制定和求解ILP ,但分支和綁定也可以工作,也可以很容易地變成(快速但可能是次優的)啟發式。
無論哪種方式,在嘗試解決問題之前(以及在添加每個列之后,如果使用B&B),這里有一些簡單的簡化規則可以應用,這通常會減少問題的大小:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.