[Java][Wątki] Komiwojażer

[Java][Wątki] Komiwojażer
madierfakier
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 13 lat
0

witam,
mam do zrobienia na uczelnie (systemy równoległe) program rozwiązujący problem komiwojażera wykorzystujący wątki. W wersji jednowątkowej sprawę załatwiałem przez rekurencję rozwijając drzewa permutacji (przeglądem zupełnym) oraz wykorzystując branch&bound odcinając dane gałęzie, które nie miały szans uzyskac lepszego wyniku.

1)Czy ma sens kod, tworzący wątki rekurencyjnie? Powstanie wtedy sporo wątków, obawiam się o koszt tworzenia wątków.

2)Wymyśliłem jeszcze drugie podejście do tego - utworzenie kilku wątków, i dynamiczne przydzielanie im roboty takie, że: każdy wątek ma przydzielone miasto początkowe, i rozwija rekurencyjnie dalej swoje drzewo(jak w wersji jednowątkowej), a gdy skończy pracę pobiera następne ewentualne miasto początkowe itd.

Jaka jest optymalna ilość wątków? Czy powinno to być parę, czy można sobie pozwolić na dużą większą ilość?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:6 minut
0

W JDK 5 masz Executory, np java.util.concurrent.executors.newFixedThreadPool , http://download.oracle.com/javase/tutorial/essential/concurrency/pools.html

W JDK 7 będzie Fork/Join Pool: http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html , który myślę, że znacznie uprościł by ci zadanie.

Stworzenie nowego Runnable jest bardzo tanie, wysłanie go do Executora ze stałą pulą wątków raczej też jest tanie.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.