OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Podobne dokumenty
Wybrane podstawowe rodzaje algorytmów

Techniki optymalizacji

Optymalizacja. Wybrane algorytmy

LABORATORIUM 7: Problem komiwojażera (TSP) cz. 2

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Metody Optymalizacji: Przeszukiwanie z listą tabu

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Optymalizacja. Przeszukiwanie lokalne

Algorytmy i struktury danych

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

Maciej Piotr Jankowski

Programowanie dynamiczne

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Metody numeryczne I Równania nieliniowe

Metody przeszukiwania

Zaawansowane programowanie

Algorytmy genetyczne dla problemu komiwojażera (ang. traveling salesperson)

Algorytmy metaheurystyczne podsumowanie

Algorytmy memetyczne (hybrydowe algorytmy ewolucyjne)

Programowanie dynamiczne i algorytmy zachłanne

Efektywna metoda sortowania sortowanie przez scalanie

Wyznaczanie optymalnej trasy problem komiwojażera

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS

Programowanie celowe #1

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Algorytm dyskretnego PSO z przeszukiwaniem lokalnym w problemie dynamicznej wersji TSP

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

Heurystyki. Strategie poszukiwań

Programowanie dynamiczne cz. 2

Algorytmy genetyczne

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Lista 0. Kamil Matuszewski 1 marca 2016

Seminarium IO. Zastosowanie algorytmu UCT w Dynamic Vehicle Routing Problem. Michał Okulewicz

Laboratorium technik optymalizacji

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Zadania laboratoryjne i projektowe - wersja β

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

RÓWNANIA NIELINIOWE Maciej Patan

Techniki optymalizacji

Algorytmy ewolucyjne (3)

Metoda bisekcji (inaczej połowienia przedziału lub równych podziałów)

Struktury Danych i Złożoność Obliczeniowa

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Wstęp do programowania

Technologia informacyjna Algorytm Janusz Uriasz

ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ NIELINIOWYCH PRZY POMOCY DODATKU SOLVER PROGRAMU MICROSOFT EXCEL. sin x2 (1)

Znajdowanie wyjścia z labiryntu

) a j x j b; x j binarne (j N) całkowitoliczbowe; przyjmujemy (bez straty ogólności): c j > 0, 0 <a j b (j N), P n

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Przykłady problemów optymalizacyjnych

Wstęp do programowania

Sortowanie przez scalanie

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Zasady analizy algorytmów

Symulacyjne metody wyceny opcji amerykańskich

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Obliczenia iteracyjne

Aproksymacja funkcji a regresja symboliczna

Analiza algorytmów zadania podstawowe

O ISTOTNYCH OGRANICZENIACH METODY

Wykład 4. Droga i cykl Eulera i Hamiltona

Schemat programowania dynamicznego (ang. dynamic programming)

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Algorytmy metaheurystyczne Wykład 6. Piotr Syga

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 24 czerwca 2019 roku

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Tabu Search (Poszukiwanie z zakazami)

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy zrandomizowane

METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. prof. dr hab.inż. Katarzyna Zakrzewska

Wykład 10 Grafy, algorytmy grafowe

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Sprawozdanie do zadania numer 2

Wstęp do metod numerycznych Zadania numeryczne 2016/17 1

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 26 czerwca 2017 roku

9.9 Algorytmy przeglądu

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Tomasz M. Gwizdałła 2012/13

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

Teoria obliczeń i złożoność obliczeniowa

Metody uporządkowania

Algorytmy i Struktury Danych, 2. ćwiczenia

Komentarz. Pieniądze wielkie pieniądze

Heurystyczne metody przeszukiwania

Transkrypt:

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE

czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000 000,000 1 000 000 000,000 100 000 000,000 10 000 000,000 1 000 000,000 100 000,000 10 000,000 1 000,000 100,000 10,000 1,000 0,100 0,010 0,001 ilość wierzchołków w grafie [n] Algorytm Zachłanny Algorytm z Powracaniem Algorytm z Powracaniem 0,006 1,177 196,147 398 779,0 2 718 017,164 18 525 592,631 126 267 628,798 860 621 001,432 5 865 862 178,274 39 980 826 678,955 Algorytm Zachłanny 0,0049 0,0082 0,0135 0,0183 0,0302 0,0451 0,0674 0,1058 0,1581 0,2424

błąd względny [%] Porównanie jakości uzyskiwanych rozwiązań przez algorytm zachłanny 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% ilość wierzchołków [n] algorytm zachłanny -> algorytm dokładny algorytm zachłanny -> optymalnie algorytm zachłanny alg. zach. -> alg. dokł. 14,02% 73,27% 54,92% 76,05% 62,40% 50,33% 63,78% 77,37% 45,27% 68,29% alg. zach. -> opt. zach 0,00% 8,31% 35,97% 22,88% 45,76% 48,22% 53,22% 58,58% 51,34% 58,22%

WNIOSKI: Problem komiwojażera jest jednym z tych problemów optymalizacji kombinatorycznej, dla których nie jest znany efektywny algorytm rozwiązywania, czyli algorytm którego czas obliczeń jest ograniczony wielomianem zmiennej n, będącej liczbą wierzchołków sieci. Rozwiązując problem TSP można wybrać jedno z dwóch następujących podejść: można zastosować metodę dokładną, gwarantującą iż otrzymane rozwiązanie jest optymalnym, ale w niektórych przypadkach nie nadającą się do rzeczywistych danych; można zastosować metodę przybliżoną, która nie generuje rozwiązań optymalnych, ale jest znacznie szybsza. Rozwiązania leżą dość blisko rozwiązań optymalnych; Nasz zespół badał zachowanie algorytmów dokładnego i opartego o metodę zachłanną. Różnice, jakie zaobserwowaliśmy są dość znaczące. Na samym początku trzeba nadmienić, iż algorytm dokładny (z powracaniem) nie rozwiązał pomyślnie problemu dla zadanej instancji (tj. od 5 do 50 wierzchołków w grafie), ponieważ pomimo tego, że analiza wykonywana była na dość szybkim komputerze PC (PentiumIV 2,4 GHz, 512 MB RAM), to znalezienie optymalnej ścieżki komiwojażera między 50 miejscami zajęłoby w przybliżeniu 462 dni, (a my mieliśmy jedynie dni 29). Algorytm ten można by usprawnić dodając procedurę odcinania tych ścieżek, które na pewnym etapie stają się rozwiązaniami złymi. Cały problem w znalezieniu optymalnej ścieżki dla komiwojażera używając algorytmu z powracaniem leży w tym, iż należy przeszukać n! możliwości (gdzie n to liczba wierzchołków), jednakże z drugiej strony może i to jest siłą tego algorytmu, bo w 100% wynik będzie optymalnym. Może kiedy dysponujemy super sprzętem komputerowym o mocy obliczeniowej nieporównywalnie większe od używanego przez nas ten algorytm sprawdziłby się, ale jaka firma może pozwolić sobie na super komputer? Większość używa komputerów PC średniej klasy, więc im możemy zaproponować algorytm heurystyczny, oparty na metodzie zachłannej. Znajduje on rozwiązanie w o wiele krótszym czasie, jednakże jakość wyników nie jest już tak precyzyjna jak w przypadku poprzedniego algorytmu. Złożoność obliczeniowa algorytmu zachłannego, konkretnie algorytmu farthest insertion, porównując go z algorytmem z powracaniem jest o wiele mniejsza, tzn. korzystniejsza dla użytkownika, któremu zależy na tym, aby wyniki były wygenerowane w możliwie jak najkrótszym czasie. Niestety wadą algorytmu farthest insertion, zarówno jak i wszystkich algorytmów heurystycznych jest to, że wyniki wygenerowane nie są w pełni optymalnymi. Oczywiście znajdują się one w ściśle określonym przedziale, który ze względu na potrzeby może być akceptowalny lub nie, ale podczas przeprowadzania przez nas analiz, rozwiązanie otrzymane przez algorytm zachłanny w stosunku do algorytmu dokładnego, nie było rozwiązaniem

wymarzonym. Generowane wyniki ustępują optymalnym nawet o około 70%, a to nie jest mało. Możemy oczywiście zredukować błąd względny poprzez wielokrotne uruchamianie tego algorytmu, każdorazowo dla innego punktu startowego. Wówczas jednak nie osiągniemy wyników w tak krótkim czasie, ale za to jakość generowanych wyników będzie znacznie lepsza i ustępować będzie wynikom algorytmu z powracaniem w granicach normy około 0,01-2,5%. Jednogłośnie możemy powiedzieć, że w naszym odczuciu o wiele lepszym algorytmem, będzie algorytm oparty o metodę zachłanną farthest insertion. Dzięki niemu udaje się wygenerować wyniki w stosunkowo bardzo szybkim czasie, a dodatkowo stosując pewien zabieg kosmetyczny będą one bardzo bliskie optymalnym. Spróbujmy jeszcze dokonać analizy samych algorytmów. Ogólnie można powiedzieć, że algorytm wykorzystujący włączanie najdalszego wierzchołka buduje ścieżkę bazując na przekonaniu, że jeżeli zgrubny zarys trasy może być skonstruowany przez znacznie oddalone wierzchołki, to ostateczna, wynikowa trasa będąca rezultatem włączania najbliższych węzłów może być wypełniona bez dużego wzrostu kosztu przejścia. Jest to intuicyjne stwierdzenie potwierdzone przez niezależnie przeprowadzone testy komputerowe, i dowodzi ono wyższości wykorzystania włączania najdalszego wierzchołka nad sposobem przeszukiwania wszystkich możliwych ścieżek. Czas działanie algorytmu farthest insertion nie zależy od rozkładu wag w sieci a jedynie od jej rozmiaru. Złożoność całego algorytmu wynosi O(n 2 ). Pętla główna programu jest wykonywana n 1 razy. Po jednym razie dla każdego nowo włączanego wierzchołka do rozwiązania. W czasie każdej k-tej iteracji wykonywanych jest k porównań wartości macierzy wag. Przy każdym przebiegu pętli głównej uaktualnia się dwie tablice. Każde uaktualnienie wymaga co najwyżej n działań. Daje to nam złożoność O(n 2 ). Należy pamiętać, że jest to złożoność dla algorytmu uruchamianego raz, dla losowo wybranego wierzchołka początkowego. Jeżeli uwzględnić, że algorytm ten jest uruchamiany dla wszystkich wierzchołków po kolei, to złożoność wzrośnie n-krotnie. Czas obliczeń dla tego przypadku wynosi więc O(n 3 ). Jeśli chodzi o złożoność obliczeniową algorytmu z powracaniem to należy go zaliczyć do klasy algorytmów o złożoności O(2 N ). Implementacyjnie nie jest on algorytmem złożonym, wywołuje się rekurencyjnie aby stworzyć złudzenie permutacji, przy czym odznacza jednocześnie przy wywołaniu flagę wierzchołka, który został właśnie włączony. Jednakże sam fakt przynależności do tej klasy algorytmów, sprawia, że jest on mało efektywnym i w rzeczywistości rzadko stosowanym, chyba że, dla celów edukacyjnych, ale jak już wspomnieliśmy, możemy go usprawnić dodając procedurę odcinającą błędne kombinacje.