2017-09-27 43 views
0

我想根據某些權重(i,j)函數匹配(線性賦值)兩組元素。我一直使用munkres,但單獨使用結果的內存量(15000 x 15000 x sizeof(float))太大。我的下一個賭注是拍賣算法,但我不確定它是否符合我的標準。內存有效的中等大小的集合賦值

可能存在僅在一側出現的元素。最佳和簡單的實施解決方案是可取的。我只是需要一個正確的方向暗示,非常感謝。

+1

您描述的結構只有858 MB。什麼是你的尺寸限制? –

+0

我受32位限制和gui部分佔用內存的限制。最大大約1gb,但肯定沒有一個連續的內存塊。我可能能夠適應當前的實現,但只能使用變通方法。而且,越快越好。 – SirPolly

+0

或者:如果用戶在其上投擲數百萬個元素,我寧願不要崩潰,只需花費更長的時間。 – SirPolly

回答

0

一旦計算出重量,就不需要以很高的精度進行存儲。您可以通過使用half-precision floating point值或其他一些16位格式立即將存儲要求從858 MB降低到429 MB。例如,取決於權重的範圍,您可能想要取權數的對數並將其存儲爲16位整數。或者,您只能存儲原始32位浮點數的指數部分,這只是8位,將存儲空間降低到215 MB。

一旦權重被轉換(或量化),就可以正常應用該算法。

+0

我做到了這一點,它的工作...有點。它不再崩潰,但我的Munkres實施太慢而無法使用。也許你有一個想法讓我進一步。 – SirPolly

+0

你應該發佈代碼。但是,如果按照最佳發佈的實現完成,那麼如果可能的話,我們可能不會做得更好。 –