Mam dwa zestawy liczb, z SET2 posiadanie więcej przedmiotów w nim zwykle. Gwarantowane jest, że liczba: SET2 jest równa lub większa od liczby SET1. Zasadniczo, ponieważ porządek ma znaczenie, dane wejściowe są raczej listami niż zestawami.Znaleźć dobre dopasowanie dwóch list liczb
Moim celem jest połączenie (podsumowanie)/zmienić kolejność numerów z SET2 zrobić to tak podobna do SET1, jak to możliwe. Definiuję podobieństwo jako sumę odchyleń w każdej pozycji. Zobacz this post dla sposobu obliczyć podobieństwo. Im mniejsza suma, tym lepiej.
Moim pierwszym podejściem było wypróbowanie wszystkich kombinacji i wybranie najlepszego. Działa to tylko w przypadku bardzo małych zestawów (szczególnie drugiego). Zobacz this post i odpowiedź od Rawlinga. Czy istnieje lepszy sposób na uzyskanie dobrego połączenia? Zdecydowanie nie potrzebuję tego najlepszego. Dobry wynik byłby w porządku. Oczywiście zestawy z pustymi podzbiorami są nonsensem. Niezwykle niezrównoważone zestawy nie wydają mi się zbyt obiecujące. SET1 ma zwykle około 8, ale może mieć do 18 wpisów. SET2 ma często liczbę większą niż 10 (do 35). Suma liczb w dwóch zestawach jest równa (z wyjątkiem błędów zaokrąglania).
Oto przykład z dobrych i złych wyników (nie wszystkie możliwe nich):
SET1 = { 272370, 194560, 233430 }; SET2 = { 53407.13, 100000, 365634.03, 181319.07 }
272370 | 194560 | 233430
---------------------------------------------------------------------
365634.03 | 100000 + 53407.13 | 181319.07 (best match)
365634.03 | 181319.07 | 100000 + 53407.13 (good)
365634.03 | 100000 |181319.07 + 53407.13 (ok)
53407.13 |365634.03 + 100000 | 181319.07 (bad)
53407.13 |365634.03 + 181319.07 | 100000 (bad)
. |365634.03 + 181319.07 | 53407.13 + 100000 (invalid)
53407.13 + 100000 |365634.03 + 181319.07 | (invalid)
Proszę dać mi znać, jeśli zapomniałem opisać przesłanki czy mój opis jest niejasny lub nawet uszkodzony. Cieszę się, że mogę podać kolejny przykład.
Z góry dziękuję!
Szukasz optymalnej odpowiedzi lub do szybkiego heurystyki? – Ari
Szybka heurystyka byłaby idealna. Zwłaszcza, że wyczerpujące obliczenia nie są możliwe. Dzięki za komentarz @Ari. – Toby