Algorytmizacja procesu wyznaczania długości ścieżek w sieci rozbudowanej podstawą optymalizacji zagadnień transportowych

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

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Sprawozdanie do zadania numer 2

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Matematyczne Podstawy Informatyki

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Złożoność obliczeniowa klasycznych problemów grafowych

a) 7 b) 19 c) 21 d) 34

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Grafy i sieci w informatyce - opis przedmiotu

Wykład 10 Grafy, algorytmy grafowe

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

Ogólne wiadomości o grafach

Programowanie dynamiczne cz. 2

G. Wybrane elementy teorii grafów

Minimalne drzewa rozpinające

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Wykład 8. Drzewo rozpinające (minimum spanning tree)

PRZEWODNIK PO PRZEDMIOCIE

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Grafy w MATLABie. LABORKA Piotr Ciskowski

Matematyczne Podstawy Informatyki

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

Informatyka w szkole - algorytm Dijkstry dla każdego. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

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

Wyznaczanie optymalnej trasy problem komiwojażera

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Digraf. 13 maja 2017

AiSD zadanie trzecie

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

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

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

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

ZAGADNIENIE TRANSPORTOWE

TEORIA GRAFÓW I SIECI

TEORETYCZNE PODSTAWY INFORMATYKI

Podejście zachłanne, a programowanie dynamiczne

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

Matematyka dyskretna

Matematyczne Podstawy Informatyki

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych

5c. Sieci i przepływy

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

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

Rozwiązywanie problemów metodą przeszukiwania

Tomasz M. Gwizdałła 2012/13

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

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

Programowanie celowe #1

ZASTOSOWANIE GRAFU WIDOCZNOŚCI W PLANOWANIU TRASY PRZEJŚCIA STATKU APPLICATION OF A VISIBILITY GRAPH IN SHIP S PATH PLANNING

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Metody uporządkowania

Programowanie dynamiczne i algorytmy zachłanne

Metody Programowania

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

TEORIA GRAFÓW I SIECI

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

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Podstawy Informatyki. Sprawność algorytmów

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

Algorytmy i struktury danych.

METODY OPTYMALIZACJI. Tomasz M. Gwizdałła 2018/19

Efektywność algorytmów

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Graf. Definicja marca / 1

Matematyka dyskretna - 7.Drzewa

Harmonogramowanie przedsięwzięć

Heurystyki. Strategie poszukiwań

doc. dr Beata Pułska-Turyna Zarządzanie B506 mail: mgr Piotr J. Gadecki Zakład Badań Operacyjnych Zarządzania B 505.

Złożoność obliczeniowa zadania, zestaw 2

Grafy i Zastosowania. 5: Drzewa Rozpinające. c Marcin Sydow. Drzewa rozpinające. Cykle i rozcięcia fundamentalne. Zastosowania

Algorytmiczna teoria grafów

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

Schemat programowania dynamicznego (ang. dynamic programming)

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

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

Drzewa poszukiwań binarnych

Sortowanie - wybrane algorytmy

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

WYKŁAD 9 METODY ZMIENNEJ METRYKI

TEORIA GRAFÓW I SIECI

Opis przedmiotu. Karta przedmiotu - Badania operacyjne Katalog ECTS Politechniki Warszawskiej

Metody uporządkowania

Przykład planowania sieci publicznego transportu zbiorowego

Projektowanie i Analiza Algorytmów

Algorytmy i Struktury Danych.

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Matematyczne Podstawy Informatyki

Klasyczne zagadnienie przydziału

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

BADANIA OPERACYJNE i teoria optymalizacji. Prowadzący: dr Tomasz Pisula Katedra Metod Ilościowych

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Transkrypt:

Ignaciuk Szymon 1, Wawrzosek Jacek 2, Kubera Elżbieta 3, Baryła-Paśnik Małgorzata 4, Piekarski Wiesław 5 Uniwersytet Przyrodniczy w Lublinie Algorytmizacja procesu wyznaczania długości ścieżek w sieci rozbudowanej podstawą optymalizacji zagadnień transportowych Wstęp Wiele systemów transportowych, dystrybucyjnych i komunikacyjnych jest projektowana i badana za pomocą modeli sieciowych. Przykładami takich systemów mogą być sieci dróg, trasy komunikacji miejskiej, sieci telefoniczne, sieci komputerowe, sieci gazowe i sieci rozdziału energii elektrycznej. Problemy transportowe miast, firm czy państwa bywają modelowane z wykorzystaniem grafu reprezentującego sieć dróg. Ponadto wiele problemów zarządzania przedsiębiorstwem, planowania produkcji, problemy transportu wewnątrzzakładowego lub sterowania procesami aparaturowymi w przemyśle można sprowadzić do zadania maksymalizacji lub minimalizacji przepływu przez sieć. Metody rozwiązujące dla tego typu zadań nazywane są metodami sieciowymi lub metodami programowania sieciowego [6, 13, 14, 15]. Grafy reprezentujące te problemy bywają tak duże, że analiza ich bez pomocy komputera jest praktycznie niemożliwa. Możliwości rozwiązywania problemów rzeczywistych technikami sieciowymi są więc takie jak możliwości analizy dużych sieci za pomocą komputera. Efektywne algorytmy rozwiązywania problemów sieciowych mają zatem duże znaczenie praktyczne [12]. Sposoby reprezentacji grafów Graf nieskierowany G = (V, E) składa się ze skończonego zbioru wierzchołków V= {vl, v2,..., vn} i skończonego zbioru krawędzi E = {e1, e2,, em}. Oznaczmy V= V =n, E= E =m. Do reprezentacji grafów nadają się takie struktury danych jak: tablice, listy, drzewa (por. tabela 1). Każda z tych reprezentacji posiada swoje specyficzne cechy, które ułatwiają w pewnych przypadkach realizację wybranych algorytmów grafowych [2, 3, 9]. Tab. 1 Złożoność pamięciowa różnych sposobów reprezentacji grafów Sposoby reprezentacji grafów Złożoność pamięciowa macierz sąsiedztwa lub przyległości (ang. adjacency matrix) O(V 2 ) lista sąsiedztwa (ang. adjacency list) O(V+E) lista krawędzi O(E) macierz incydencji (ang. incidence matrix) O(E V) macierz grafu (ang. graph matrix) O((V+2) 2 ) Reprezentacja tablicowa wydaje się najbardziej dominująca. Dwuwymiarowa tablica, w której wiersze będą oznaczały wierzchołki początkowe krawędzi grafu, a kolumny ich wierzchołki końcowe opisuje graf nosi nazwę tablicy adiacencji. W tablicy tej jedynka na pozycji (x, y) oznacza, że pomiędzy wierzchołkami x i y istnieje krawędź skierowana (łuk) w stronę y. W każdym innym przypadku będzie 0. Zaletą takiej reprezentacji grafów jest prostota w implementacji, a wadą ustalona z góry liczba wierzchołków grafu. W praktyce lista sąsiedztwa (oraz jej odpowiadająca tablica incydencji) okazuje się efektywniejszą reprezentacją grafu, gdy bada się grafy rzadkie tj. grafy o liczbie wierzchołków wielokrotnie przewyższającej ilość krawędzi. 1 Szymon Ignaciuk, Uniwersytet Przyrodniczy w Lublinie, Katedra Zastosowań Matematyki i Informatyki 2 Jacek Wawrzosek, Uniwersytet Przyrodniczy w Lublinie, Katedra Zastosowań Matematyki i Informatyki 3 Elżbieta Kubera, Uniwersytet Przyrodniczy w Lublinie, Katedra Zastosowań Matematyki i Informatyki 4 Małgorzata Baryła-Paśnik, Uniwersytet Przyrodniczy w Lublinie, Katedra Energetyki i Środków Transportu 5 Wiesław Piekarski, Uniwersytet Przyrodniczy w Lublinie, Katedra Energetyki i Środków Transportu Logistyka 5/2015 145

Macierz rzadka i pełna Macierzą rzadką nazywana jest macierz, w której większość elementów ma wartość zero. Macierze rzadkie stanowią jeden z głównych obszarów zainteresowań metod numerycznych, a wykorzystywane są w teorii grafów oraz dyscyplinach pochodnych stosujących teorię grafów. Do przechowywania i operacji na macierzach rzadkich w komputerach stosuje się specjalne algorytmy i struktury danych, które optymalnie wykorzystują strukturę macierzy rzadkich. Główną zaletą macierzy rzadkiej jest oszczędny jej zapis nie wymagający blokowania dużej pamięci na zapisywanie zer oraz modyfikacja algorytmu obliczeniowego w celu automatycznego wyeliminowania zbędnych operacji z udziałem zer. Dlatego algorytmy opracowane dla macierzy rzadkich są zwykle wielokrotnie szybsze od analogicznych algorytmów dla macierzy gęstych. Dzięki zastosowaniu specjalnych struktur danych, przechowywanie i operacje na macierzach rzadkich wiążą się ze znacznie mniejszym zużyciem pamięci operacyjnej niż w przypadku macierzy gęstych o tych samych rozmiarach. Efektywność metody macierzy rzadkich w zakresie oszczędności pamięci jest dość oczywista i zależy ona głównie od wielkości tej macierzy. Oszczędność w zajętości pamięci może być niekiedy kilkudziesięciokrotna. Macierze rzadkie spotykane w zastosowaniach praktycznych często mają tak wielki rozmiar, że jakiekolwiek operacje na nich za pomocą standardowych algorytmów byłyby zupełnie niemożliwe. Przy tym nie istnieje ścisłe kryterium pozwalające odróżniać macierze rzadkie od gęstych. W praktyce określenie jakiejś macierzy jako rzadkiej oznacza, że opłaca się operować na niej za pomocą algorytmów przeznaczonych dla macierzy rzadkich. Najkrótsze ścieżki w grafie nieskierowanym Znanym zagadnieniem teorii badań operacyjnych jest wyznaczanie najkrótszej ścieżki w grafie nieskierowanym pomiędzy dwoma węzłami tej sieci. Algorytm Dijkstry [5], służy do znajdowania najkrótszej ścieżki z pojedynczego źródła w grafie o nieujemnych wagach krawędzi. Z algorytmu Dijkstry można skorzystać przy obliczaniu najkrótszej ścieżki do danej miejscowości np. przy problemach zwózki mleka. Wystarczy przyjąć, że każdy z punktów skrzyżowań dróg to jeden z wierzchołków grafu, a odległości między punktami to wagi krawędzi. Algorytm ten nie działa, jeśli w grafie występują krawędzie z ujemnymi wagami w tym wypadku używa się wolniejszego, lecz bardziej ogólnego algorytmu Bellmana-Forda. Jeśli graf nie jest ważony (wszystkie wagi mają wielkość 1), zamiast algorytmu Dijkstry wystarczy algorytm przeszukiwania grafu wszerz. Algorytm A* jest pewnym uogólnieniem algorytmu Dijkstry, które pozwala przeszukiwać tylko część grafu, jednak wymaga dodatkowej wstępnej informacji (heurystyki) o odległościach wierzchołków. Odmianą powyższego zagadnienia jest problem znalezienia najkrótszych ścieżek pomiędzy wszystkimi parami węzłów grafu. Wydawać by się mogło, że do rozwiązania drugiego zagadnienia wystarczy zastosować dowolny algorytm wyznaczający długość najkrótszej ścieżki dla wszystkich par węzłów grafów. Takie podejście byłoby jednak nieefektywne (por. metoda wg. algorytmu Dijkstry dla danych z analizowanego przykładu 1; tabela 7). Stąd odmienność algorytmów stosowanych w tych dwóch oddzielnych zagadnieniach. Najkrótsze ścieżki pomiędzy wszystkimi wierzchołkami znajdują m.in.: 1) algorytm oparty na mnożeniu macierzy, 2) algorytm Floyda-Warshalla lub 3) algorytm Johnsona. Algorytm Johnsona wykorzystuje algorytmy Dijkstry i Bellmana-Forda i dla grafów rzadkich jest asymptotycznie szybszy od algorytmu Floyda-Warshalla. W tej pracy zaproponowano i zaprezentowano autorski algorytm etapowy wyznaczający najkrótsze ścieżki dla wszystkich par spójnego nieskierowanego grafu o nieujemnych wagach na krawędziach oraz porównano go z wybranymi algorytmami znanymi z literatury dla prostego przykładu rzeczywistych odległości pomiędzy kilkunastoma miejscowościami rozpatrywanymi w problemie zwozu mleka od producentów. 146 Logistyka 5/2015

Minimalny graf rozpinający wszystkie najkrótsze ścieżki Algorytm Kruskala [10] wyznacza minimalne drzewo rozpinające dla grafu nieskierowanego ważonego, o ile jest on spójny. Innymi słowy, znajduje drzewo zawierające wszystkie wierzchołki grafu, którego waga jest możliwie najmniejsza. Zaś algorytm Dijkstry Prima Jarníka znajdowania minimalnego drzewa rozpinającego oparty jest o bardzo podobny pomysł co algorytm Dijkstry. W literaturze przedmiotu wymienia się tu również wielokrotnie, niezależnie na nowo odkrywany algorytm Borůvki [13, 14]. Te trzy deterministyczne algorytmy zachłanne w swej wersji podstawowej mają złożoność obliczeniową liniowo-logarytmiczną (tj. O(E logv)). Już Held i Karp [7, 8] zamieszczają informację o związku pomiędzy zagadnieniem minimalnego drzewa rozpinającego a problemem komiwojażera. Techniki opracowane i zawarte w obecnej pracy służyć mają rozwiązywaniu problemów związanych z szeroko rozumianymi zagadnieniami transportowymi m.in. z problemem komiwojażera i związanym z nim praktycznym zagadnieniem zwozu mleka przez mleczarnie. Stąd zainteresowanie autorów nieco szerszym problemem minimalnego grafu rozpinającego wszystkie najkrótsze ścieżki. Do tego problemu nawiązujemy poniżej. Złożoność obliczeniowa algorytmów zależy od implementacji (por. tabela 2). Szerzej określaniem ilości zasobów takich jak czas, pamięć lub liczba procesorów niezbędnych do rozwiązania problemów obliczeniowych zajmuje się teoria złożoności obliczeniowej [4]. Tab. 2 Obliczeniowa złożoność czasowa i pamięciowa wybranych algorytmów Algorytm Obliczeniowa złożoność czasowa Złożoność pamięciowa Dijkstry O(V); O(V 2 ); O(E logv); O(V logv+e) Bellmana-Forda O(E V) O(V) A* O(E) O(V) oparty na mnożeniu macierzy O(V 3 logv) Floyda-Warshalla O(V 3 ) O(V 2 ) Johnsona O(V 2 logv+v E) Kruskala O(E logv) Dijkstry Prima Jarníka O(E logv); O(V logv+e) Borůvki O(E logv); O(E logv-v) Cel pracy i odwracalność procedury Współczesne techniki informatyczne pozwalają na przechowywanie w pamięci komputera pełnych danych [11] zawierających informację obejmującą minimalną odległość między dwoma dowolnymi węzłami sieci i ciąg węzłów opisujących tą najkrótszą ścieżkę. W oparciu o taką istniejącą bazę można dokonywać optymalizacji procesów transportowych. Celem pracy jest skonstruowanie nowego algorytmu etapowego, który na bazie wag przypisanych krawędziom grafu nieskierowanego (interpretowanymi jako odległości między dwoma węzłami) wyznacza macierz najkrótszych odległości między wszystkimi węzłami grafu (jeśli jest on spójny) oraz ścieżki po której proces ten będzie realizowany. Proces ten prowadzi do zastąpienia macierzy rzadkiej przez macierzą pełną. Równocześnie proces modelowania stanowi przejście pomiędzy zagadnieniami z zakresu teorii grafów a teorii przestrzeni metrycznych. Tak utworzona macierz pełna może stanowić podstawę do tworzenia bazy pełnych cykli Hamiltona lub innych zagadnień systemów transportowych za pomocą klasycznych algorytmów [6, 13, 14, 15]. Dodatkowo celem tej pracy jest: 1. Pokazanie wykorzystania algorytmu etapowego dla rzeczywistych danych pochodzących z zagadnień przemysłu mleczarskiego [1], 2. Wstępne porównanie algorytmu etapowego ze znanymi algorytmami dla przykładowych danych. 3. Wskazanie dodatkowych zalet analizowanego algorytmu. Gdy już z rzadkiej macierzy odległości w spójnej sieci nieskierowanej potrafimy utworzyć pełną macierz minimalnych odległości między wszystkimi węzłami, powstaje następujące docelowe pytanie odwrotne: Logistyka 5/2015 147

Jak utworzyć z niej macierz minimalnych odległości maksymalnie rzadką? Oznacza to, z których ścieżek można zrezygnować by nie wydłużyć najkrótszych połączeń drogowych? Innymi słowy chodzi o minimalny graf rozpinający wszystkie najkrótsze ścieżki. Ewentualnie graf rozpinający ścieżki, w których najkrótsze połączenia różnią się od najkrótszych ścieżek z zadaną z góry dokładnością. Pozwoli to na zbliżoną do rzeczywistości reprezentację macierzy odległości za pomocą grafu i równocześnie uproszczenie sposobu zapisu macierzy odległości w pamięci komputera. By móc to zagadnienie skutecznie kontrolować cała procedura musi być odwracalna. Stąd we wstępnym kroku tych prac opisujemy jej działanie w jedną stronę. Algorytm etapowy Zaproponowany w tej pracy algorytm etapowy to algorytm dynamiczny, tzn. taki, który w kolejnych etapach wykorzystuje informacje uzyskane w etapach poprzednich. Algorytm na k-tym etapie znajduje wszystkie najkrótsze ścieżki o co najwyżej k pośrednikach pomiędzy wybranymi parami węzłów. Wynik w k-tym kroku zapisywany jest w macierzy o nazwie odleglosci. Dodatkowo algorytm tworzy, a następnie w kolejnych etapach uzupełnia i nadpisuje macierz ilości pośredników (macierz o nazwie posrednicy) na dotychczas najkrótszej ścieżce łączącej wybrane wierzchołki. Ponadto algorytm tworzy i wypełnia macierz poprzednicy, umożliwiającą odczytanie przebiegu najkrótszej ścieżki pomiędzy wybranymi dwoma węzłami. Macierz ta w wierszu odpowiadającym węzłowi A zawiera numer węzła poprzedzającego węzeł B na ścieżce od A do B. W tej pracy zawarta została wersja algorytmu dla grafu nieskierowanego, tj. takiego, że z założenia odległość od A do B jest równa odległości od B do A. Poniżej zamieszczony jest kod algorytmu w języku MATLAB z odpowiednimi komentarzami. %Algorytm etapowy wyznaczania najkrótszych ścieżek i ich długości miedzy wszystkimi podanymi węzłami. %Dane wejściowe: %PolBezposr macierz rzadka zawierająca długości ścieżek łączących bezpośrednio wybrane węzły, gdzie %NaN występuje, gdy bezpośrednia ścieżka nie istnieje. % Odległość z A do A wynosi 0, przekątna macierzy odległości składa się z zer. % Macierz odległości jest z założenia symetryczna dla grafu nieskierowanego, ale algorytm można przebudować, % by rozwiązywał zagadnienie również dla macierzy niesymetrycznych (dla grafów skierowanych) %maxetap - pozwala kontrolować i ograniczyć ilość pośredników, tzn. można wyznaczyć tylko %ścieżki wiodące przez co najwyżej maxetapow pośredników % %Dane wyjściowe: %odleglosci macierz pełna zawierająca długości najkrótszych ścieżek pomiędzy wszystkimi węzłami A i B %posrednicy - zawiera ilości węzłów na ścieżce od A do B %poprzednicy - zawiera numer węzła poprzedzającego węzeł B na ścieżce z A do B function [odleglosci,posrednicy,poprzednicy]=algorytmetapowy (PolBezposr,maxEtap) if nargin<2 maxetap=n-2; %przygotowanie 3 macierzy do przechowywania: odległości, ilości %pośredników i numerów poprzedniego węzła na najkrótszej ścieżce odleglosci=polbezposr; ilpustych=0; posrednicy=odleglosci; n=size(odleglosci,1); %n - ilość węzłów - macierz z założenia jest kwadratowa poprzednicy=zeros(n,n); for i=1:n for j=(i+1):n if (~ isnan(posrednicy(i,j)) )&(posrednicy(i,j)~=0) posrednicy(i,j)=1; posrednicy(j,i)=1; poprzednicy(i,j)=i; poprzednicy(j,i)=j; else if isnan(posrednicy(i,j)) ilpustych=ilpustych+1; % w pętli algorytm sprawdza ścieżki o coraz większej ilości pośredników % (etap=ilość pośredników na ścieżce) i aktualizuje macierze wyjściowe % tak, by zawierały najkrótsze ścieżki etap=1; bzmiana=true; 148 Logistyka 5/2015

while (ilpustych>0 bzmiana) & (etap<=maxetap) % dopóki są puste miejsca w tablicy %odległości lub dopóki poprzedni obrót powodował zmiany, ale etap nie wyższy niż maxetap bzmiana=false; for m=1:n for m1=1:n if posrednicy(m,m1)==etap for m2=1:n if posrednicy(m1,m2)==1 %tylko dojazd bezpośredni if (isnan(odleglosci(m,m2))) (odleglosci(m,m1)+odleglosci(m1,m2))<odleglosci(m,m2) if isnan(odleglosci(m,m2)) ilpustych=ilpustych-1; posrednicy(m,m2)=etap+1; posrednicy(m2,m)=etap+1; odleglosci(m,m2)=odleglosci(m,m1)+odleglosci(m1,m2); odleglosci(m2,m)=odleglosci(m,m2); poprzednicy(m,m2)=m1; poprzednicy(m2,m)=poprzednicy(m1,m); bzmiana=true; etap=etap+1; Algorytm dynamiczny prezentowany w tej pracy można zestawiać również z dynamicznym algorytmem Floyda-Warshalla. Różnicę stanowi przechowywanie w tablicy ilości etapów pośrednich, eliminujące konieczność sprawdzania wszystkich par wierzchołków w danym etapie, jak to ma miejsce w algorytmie Floyda-Warshalla. Różne jest też kryterium zatrzymania się algorytmu. Algorytm Floyda-Warshalla w wersji klasycznej zatrzymuje się po wykonaniu V kroków podczas, gdy zamieszczony w tej pracy zatrzymuje się, gdy w dwóch kolejnych krokach uzyskany wynik jest identyczny. Poniżej zamieszczamy przykład z rzeczywistymi odległościami zaczerpnięty z zagadnień odnoszących się do problemu zwozu mleka z mleczarni. Przykład 1. W tabeli 3 zamieszczone zostały rzeczywiste i bezpośrednie odległości pomiędzy 15 miejscowościami obsługiwanymi przez jedna z mleczarń regionu wschodniej Polski. Na potrzeby optymalizacji problemu zwozu mleka z tych miejscowości konieczne jest wyznaczenie najkrótszych odległości między każdymi dwiema miejscowościami. Nr węzła Skrót Miejscowość R. P. C. T. S. W. Wr. Bo. St. Wo. B. R. Bi. U. Wi. Su. J. P. 1 R. P. Radzyń Podlaski 0 14,9 1,7 13,2 6,5 4,8 1,1 15,6 2 C. Czemierniki 14,9 0 12,5 6 15,9 13,9 9,8 9,4 22,8 3 T. Tchórzew 12,5 0 6,2 4,3 4 S. W. Stara Wieś 6,2 0 2,2 2,9 5 Wr. Wrzosów 2,2 0 6 Bo. Borki 1,7 4,3 2,9 0 14,9 15,1 7 St. Stoczek 6 0 5,7 14,4 22,6 8 Wo. Wohyń 13,2 15,9 0 8,9 12,8 26 7,4 24,6 18,6 9 B. R. Branica Radzyńska 6,5 13,9 8,9 0 14,8 22,7 1 26,4 25,6 10 Bi. Białka 4,8 14,9 12,8 0 13 11 U. Ulan 1,1 15,1 14,8 13 0 23,9 12 Wi. Wierzchowiny 9,8 5,7 26 22,7 0 19,5 5,3 2 13 Su. Suchowola 15,6 9,4 14,4 7,4 1 23,9 19,5 0 18,1 17,4 14 J. Juliopol 24,6 26,4 5,3 18,1 0 18,7 15 P. Parczew 22,8 22,6 18,6 25,6 2 17,4 18,7 0 Tab. 3 Macierz rzadka rzeczywistych odległości bezpośrednich pomiędzy 15 miejscowościami W wyniku zastosowania algorytmu etapowego uzyskuje się trzy macierze zebrane poniżej. Logistyka 5/2015 149

R. P. C. T. S. W. Wr. Bo. St. Wo. B. R. Bi. U. Wi. Su. J. P. Radzyń Podlaski 0 14,9 6 4,6 6,8 1,7 20,9 13,2 6,5 4,8 1,1 24,7 7,5 25,6 24,9 Czemierniki 14,9 0 12,5 18,7 20,9 16,6 6 15,9 10,4 19,7 16 9,8 9,4 15,1 11,8 Tchórzew 6 12,5 0 6,2 8,4 4,3 18,5 19,2 12,5 10,8 7,1 22,3 13,5 27,6 24,3 Stara Wieś 4,6 18,7 6,2 0 2,2 2,9 24,7 17,8 11,1 9,4 5,7 28,5 12,1 30,2 29,5 Wrzosów 6,8 20,9 8,4 2,2 0 5,1 26,9 20 13,3 11,6 7,9 30,7 14,3 32,4 31,7 Borki 1,7 16,6 4,3 2,9 5,1 0 22,6 14,9 8,2 6,5 2,8 26,4 9,2 27,3 26,6 Stoczek 20,9 6 18,5 24,7 26,9 22,6 0 21,8 15,4 25,7 22 5,7 14,4 11 7,7 Wohyń 13,2 15,9 19,2 17,8 20 14,9 21,8 0 8,4 12,8 14,3 20,6 7,4 24,6 18,6 Branica Radzyńska 6,5 10,4 12,5 11,1 13,3 8,2 15,4 8,4 0 11,3 7,6 20,2 1 19,1 18,4 Białka 4,8 19,7 10,8 9,4 11,6 6,5 25,7 12,8 11,3 0 5,9 29,5 12,3 30,4 29,7 Ulan 1,1 16 7,1 5,7 7,9 2,8 22 14,3 7,6 5,9 0 25,8 8,6 26,7 26 Wierzchowiny 24,7 9,8 22,3 28,5 30,7 26,4 5,7 20,6 20,2 29,5 25,8 0 19,2 5,3 2 Suchowola 7,5 9,4 13,5 12,1 14,3 9,2 14,4 7,4 1 12,3 8,6 19,2 0 18,1 17,4 Juliopol 25,6 15,1 27,6 30,2 32,4 27,3 11 24,6 19,1 30,4 26,7 5,3 18,1 0 7,3 Parczew 24,9 11,8 24,3 29,5 31,7 26,6 7,7 18,6 18,4 29,7 26 2 17,4 7,3 0 Tab. 4 Odleglosci. Symetryczna macierz gęsta wszystkich odległości pomiędzy 15 miejscowościami, uzyskana w wyniku zastosowania algorytmu etapowego R. P. C. T. S. W. Wr. Bo. St. Wo. B. R. Bi. U. Wi. Su. J. P. Radzyń Podlaski 0 1 2 2 3 1 2 1 1 1 1 2 2 3 3 Czemierniki 1 0 1 2 3 2 1 1 2 2 2 1 1 2 2 Tchórzew 2 1 0 1 2 1 2 3 3 3 3 2 4 3 3 Stara Wieś 2 2 1 0 1 1 3 3 3 3 3 3 4 5 5 Wrzosów 3 3 2 1 0 2 4 4 4 4 4 4 5 5 5 Borki 1 2 1 1 2 0 3 2 2 2 2 3 3 4 4 Stoczek 2 1 2 3 4 3 0 2 2 3 3 1 1 2 2 Wohyń 1 1 3 3 4 2 2 0 2 1 2 2 1 1 1 Branica Radzyńska 1 2 3 3 4 2 2 2 0 2 2 3 1 2 2 Białka 1 2 3 3 4 2 3 1 2 0 2 3 3 4 4 Ulan 1 2 3 3 4 2 3 2 2 2 0 3 3 4 4 Wierzchowiny 2 1 2 3 4 3 1 2 3 3 3 0 2 1 1 Suchowola 2 1 4 4 5 3 1 1 1 3 3 2 0 1 1 Juliopol 3 2 3 5 5 4 2 1 2 4 4 1 1 0 2 Parczew 3 2 3 5 5 4 2 1 2 4 4 1 1 2 0 Tab. 5 Posrednicy. Symetryczna macierz zawierająca ilość pośredników na najkrótszej ścieżce pomiędzy każdą parą węzłów R. P. C. T. S. W. Wr. Bo. St. Wo. B. R. Bi. U. Wi. Su. J. P. Radzyń Podlaski 0 1 6 6 4 1 2 1 1 1 1 2 9 13 13 Czemierniki 2 0 2 3 4 1 2 2 13 1 1 2 2 12 12 Tchórzew 6 3 0 3 4 3 2 1 1 1 1 2 9 12 12 Stara Wieś 6 3 4 0 4 4 2 1 1 1 1 2 9 13 13 Wrzosów 6 3 4 5 0 4 2 1 1 1 1 2 9 13 13 Borki 6 1 6 6 4 0 2 1 1 1 1 2 9 13 13 Stoczek 2 7 2 3 4 1 0 13 13 1 1 7 7 12 12 Wohyń 8 8 6 6 4 1 13 0 13 8 1 15 8 8 8 Branica Radzyńska 9 13 6 6 4 1 13 13 0 1 1 2 9 13 13 Białka 10 1 6 6 4 1 2 10 1 0 1 2 9 13 13 Ulan 11 1 6 6 4 1 2 1 1 1 0 2 9 13 13 Wierzchowiny 2 12 2 3 4 1 12 15 13 1 1 0 2 12 12 Suchowola 9 13 6 6 4 1 13 13 13 1 1 2 0 13 13 Juliopol 9 12 2 6 4 1 12 14 13 1 1 14 14 0 12 Parczew 9 12 2 6 4 1 12 15 13 1 1 15 15 12 0 Tab. 6 Poprzednicy. Macierz zawierająca numer węzła (tabela 3) poprzedzającego węzeł B na ścieżce od A do B Wstępna analiza działania algorytmu etapowego Porównanie algorytmu etapowego ze znanymi algorytmami dla przykładu 1 Jednym z najważniejszych kryteriów oceny algorytmu jest szybkość jego działania. Stąd dla danych z przykładu 1 określone zostały pierwsze i średnie czasy pracy algorytmu etapowego na tle szybkości działania wybranych algorytmów (tabela 7). 150 Logistyka 5/2015

Rodzaj algorytmu czas (s) działania algorytmu w pierwszym wywołaniu Rodzaj algorytmu Tab. 7 Porównanie czasów działania algorytmów dla danych z przykładu 1 Uzyskane w tabeli 7 dane pokazują, że: 1. Szybkość działania algorytmu etapowego jest porównywalna (przynajmniej dla danych z przykładu 1) z szybkością działania algorytmów dedykowanych znajdowaniu najkrótszych ścieżek dla wszystkich par węzłów. Są one tego samego rzędu wielkości. 2. Metoda wg. algorytmu Dijkstry, wyznaczająca najkrótsze ścieżki osobno dla każdej pary węzłów, wypada znacznie słabiej nawet po wprowadzeniu modyfikacji usprawniających jej pracę. Czas działania pierwszego wywołania algorytmów różni się od czasów uzyskiwanych w wywołaniach kolejnych ze względu na konieczności alokacji przez program odpowiedniej ilości miejsca w pamięci komputera. Ścisłe określenie złożoności obliczeniowej algorytmu etapowego wymaga osobnych badań, które nie są częścią tej pracy. Co więcej, algorytm etapowy umożliwia kontrolowanie i ograniczanie ilości pośredników na ścieżce (szerzej o tym w podrozdziale etapowość algorytmu etapowego). To zaś może znacząco skrócić czas jego działania. Stąd wniosek, że wymagane będzie określenie złożoności obliczeniowej algorytmu etapowego w zależności od z góry przyjętej maksymalnej ilości pośredników. Gdyby w wyniku przeprowadzonych dalszych badań udało się uzyskać wyniki analogiczne jak dla analizowanego przykładu 1, to algorytm etapowy okazałby się interesującą alternatywą dla wcześniej wymienionych algorytmów, a posiadając dodatkowe zalety wymienione poniżej w niektórych zagadnieniach stałby się niezastąpiony. Zalety stosowania algorytmu etapowego Etapowość algorytmu etapowego średni czas (s) działania algorytmu wyciągnięty z 9 wywołań Algorytm etapowy 0,000743 Algorytm etapowy 0,000172 Floyd_Warshall 0,001402 Floyd_Warshall 0,000139 Johnson 0,002222 Johnson 0,000288 Dijkstra_modified 0,010369 Dijkstra_modified 0,006549 Dijkstra 0,010826 Dijkstra 0,010487 Algorytm etapowy na tle innych algorytmów posiada interesującą zaletę. W kolejnych etapach jego przebiegu wyznaczone zostają najkrótsze ścieżki spinające wybrane węzły grafu o z góry ograniczonej ilości węzłów pośrednich. Kontrolę ilości pośredników umożliwia zawarta w kodzie określana przez użytkownika zmienna maxetap. Cecha etapowości może być odzyskana z wyników uzyskiwanych przez inne algorytmy, ale wymaga to ich modyfikacji oraz wydłużenia czasu ich działania. W przeciwieństwie do nich, przyjęcie z góry pewnej wartości za zmienną maxetap w algorytmie etapowym skraca czas jego działania (tym bardziej im mniejszą wartość przyjmie opisywany parametr maxetap). Sama cecha etapowości wymagana jest w niektórych zagadnieniach transportowych. Ograniczenie ilości pośredników bywa warunkiem koniecznym lub istotnym realizowanej tam optymalizacji. Do tego typu zagadnień należą: przewóz dóbr o krótkim terminie trwałości lub narażonych na straty na etapach pośrednich, problemy związane z ilością przesiadek, problemy związane z ilością napotykanych centrów miast, ilością czynności biurokratycznych towarzyszących współpracy pośredników, określanie optymalnego planu obrotu informacjami niejawnymi. Algorytm etapowy dla grafów spójnych nieskierowanych/skierowanych a przestrzenie metryczne/quasimetryczne Stosując algorytm etapowy wyznacza się w spójnym nieskierowanym grafie najkrótsze ścieżki pomiędzy wszystkimi parami węzłów. W ten sposób uzyskuje się przestrzeń metryczną, którą stanowią zbiór wszystkich węzłów grafu oraz funkcja przyporządkowująca każdej parze węzłów odległość pomiędzy nimi (odczytywaną z utworzonej macierzy odleglosci). Tak utworzona przestrzeń metryczna sama w sobie stanowi ciekawe uogólnienie przestrzeni o metryce miasto inaczej zwanej metryką taksówkową. Tam poruszanie odbywa się w sposób wyidealizowany jedynie po prostopadłych odcinkach od A do B i tak też mierzy się odległość pomiędzy nimi. Stąd jeszcze inna nazwa tej metryki Manhattan, gdyż jest to jedno z nielicznych miejsc na ziemi dla których ta metryka jest rzeczywistą miarą odległości. Metryka określona macierzą Logistyka 5/2015 151

odleglosci uzyskaną poprzez zastosowanie algorytmu etapowego odpowiada dowolnym rzeczywistym odległościom. Co pokazuje, że rozważając codzienne problemy komunikacyjne w istocie rozważamy matematyczne problemy transportu w przestrzeni metrycznej. Prowadzone dotychczas rozważania dotyczyły działania algorytmu etapowego dla grafu nieskierowanego. Założenie nieskierowania może być jednak pominięte (macierz rzadka bezpośrednich odległości między wybranymi węzłami grafu jest wtedy niesymetryczna). Jeśli dopuszcza się, że odległość od A do B może być inna niż od B do A, to podany powyżej kod algorytmu etapowego wymagać będzie nieznacznych modyfikacji. Uzyskuje się wtedy również niesymetryczną macierz odleglosci pomiędzy wszystkimi parami węzłów grafu i przestrzeń quasimetryczną, którą stanowią zbiór wszystkich węzłów grafu oraz funkcja przyporządkowująca każdej uporządkowanej parze węzłów odległość pomiędzy nimi (odczytywaną z utworzonej niesymetrycznej macierzy odleglosci, gdzie kolejność węzłów w parze jest istotna). Kwestia skierowania lub nieskierowania grafu jest istotna w logistyce, gdy np. w zagadnieniach transportowych czas transportu od miejscowości A do B jest inny niż od B do A. Algorytm etapowy dla niespójnych grafów nieskierowanych Założenie spójności grafu również może być pominięte. Co więcej założenie to nie jest warunkiem koniecznym działania zamieszczonego powyżej kodu algorytmu etapowego. I tak jeśli dla danych z przykładu 1 usunie się połączenia pomiędzy Starą Wsią a Tchórzewem oraz pomiędzy Starą Wsią a Borkami, to otrzyma się dwa spójne grafy nie mające pomiędzy sobą połączenia. Jeden o dwóch węzłach (Stara Wieś, Wrzosów) i jeden o trzynastu węzłach (13 miejscowości poza Starą Wsią i Wrzosowem). W wyniku zastosowania algorytmu etapowego dla macierzy zawierającej tak zmodyfikowane odległości otrzymuje się po przesortowaniu macierz odleglosci jak w tabeli 8, gdzie NaN oznacza brak połączenia pomiędzy węzłami. Rozszerzenie działania algorytmu na grafy niespójne jest istotne ze względu na możliwość jego zastosowania w szerszej klasie zagadnień logistycznych. Bowiem podejmowane czynności logistyczne pozwalają przeprowadzać operacje również w ramach grafu niespójnego. R. P. C. T. Bo. St. Wo. B. R. Bi. U. Wi. Su. J. P. S. W. Wr. Radzyń Podlaski 0 14,9 6 1,7 20,9 13,2 6,5 4,8 1,1 24,7 7,5 25,6 24,9 NaN NaN Czemierniki 14,9 0 12,5 16,6 6 15,9 10,4 19,7 16 9,8 9,4 15,1 11,8 NaN NaN Tchórzew 6 12,5 0 4,3 18,5 19,2 12,5 10,8 7,1 22,3 13,5 27,6 24,3 NaN NaN Borki 1,7 16,6 4,3 0 22,6 14,9 8,2 6,5 2,8 26,4 9,2 27,3 26,6 NaN NaN Stoczek 20,9 6 18,5 22,6 0 21,8 15,4 25,7 22 5,7 14,4 11 7,7 NaN NaN Wohyń 13,2 15,9 19,2 14,9 21,8 0 8,4 12,8 14,3 20,6 7,4 24,6 18,6 NaN NaN Branica Radzyńska 6,5 10,4 12,5 8,2 15,4 8,4 0 11,3 7,6 20,2 1 19,1 18,4 NaN NaN Białka 4,8 19,7 10,8 6,5 25,7 12,8 11,3 0 5,9 29,5 12,3 30,4 29,7 NaN NaN Ulan 1,1 16 7,1 2,8 22 14,3 7,6 5,9 0 25,8 8,6 26,7 26 NaN NaN Wierzchowiny 24,7 9,8 22,3 26,4 5,7 20,6 20,2 29,5 25,8 0 19,2 5,3 2 NaN NaN Suchowola 7,5 9,4 13,5 9,2 14,4 7,4 1 12,3 8,6 19,2 0 18,1 17,4 NaN NaN Juliopol 25,6 15,1 27,6 27,3 11 24,6 19,1 30,4 26,7 5,3 18,1 0 7,3 NaN NaN Parczew 24,9 11,8 24,3 26,6 7,7 18,6 18,4 29,7 26 2 17,4 7,3 0 NaN NaN Stara Wieś NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 2,2 Wrzosów NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2,2 0 Tab. 8 Posortowana macierz odleglosci dla niespójnego grafu (składającego się z dwóch spójnych podgrafów) Wnioski 1. Algorytm etapowy wyznacza długość najkrótszej ścieżki pomiędzy każdymi dwoma węzłami grafu spójnego nieskierowanego (macierz odleglosci; tabela 4), nadto ilość pośredników na tej ścieżce (macierz posrednicy; tabela 5) jak i przebieg samej ścieżki (odczytywany z macierz poprzednicy; tabela 6). 2. Algorytm etapowy wykrywa w grafie występowanie ścieżek z pośrednikami krótszych niż ścieżki bezpośrednio łączące węzły. I tak bezpośrednia odległość pomiędzy Suchowolą a Radzyniem Podlaskim wynosi 15,6 km (tabela 3), a wyznaczona przez algorytm i zawarta w macierzy odleglosci (tabela 4 kolor szary) wynosi 7,5 km. 3. Macierz rzadka rzeczywistych odległości bezpośrednich pomiędzy 15 miejscowościami (tabela 3) nie odpowiada minimalnemu grafowi rozpinającemu wszystkie najkrótsze ścieżki. Fakt ten ujawnia poprzedni wniosek. Problem utworzenia minimalnego grafu rozpinającego wszystkie najkrótsze ścieżki należy podjąć w kolejnej pracy. 152 Logistyka 5/2015

4. Wstępna analiza czasu działania algorytmu etapowego wskazuje na jego alternatywność względem klasycznie stosowanych algorytmów. Zagadnienie wymaga dalszych pogłębionych badań. 5. Algorytm etapowy posiada cechę etapowości konieczną lub istotną dla pewnej klasy zagadnień transportowych i mogącą skracać czas jego działania. 6. Algorytm etapowy działa również dla grafów niespójnych, zaś dla skierowanych wymaga nieznacznych modyfikacji. Fakty te istotnie poszerzają zakres zastosowań algorytmu także na inne zagadnienia logistyczne. Streszczenie Matematyczne metody optymalizacyjne służą jako narzędzie wykorzystywane przy podejmowaniu decyzji w działalności transportowej. Graf jest powszechnie stosowany do prezentacji problemów logistycznych. Znanym zagadnieniem w literaturze przedmiotu jest wyznaczanie najkrótszej ścieżki w grafie nieskierowanym o nieujemnych wagach na krawędziach pomiędzy dwoma węzłami tej sieci. Odmianą tego zagadnienia jest problem znalezienia najkrótszych ścieżek pomiędzy wszystkimi parami węzłów grafu. Działanie takie w zakresie zagadnień transportowych ma na celu utworzenie pełnej macierzy odległości między wszystkimi węzłami grafu (wyznaczenie najkrótszych odległości między wszystkimi punktami nadania i odbioru towaru). Współczesne techniki informatyczne pozwalają na przechowywanie w pamięci komputera pełnych danych zawierających informację obejmującą odległość między dwoma dowolnymi węzłami sieci i ciąg węzłów opisujących tą najkrótszą ścieżkę. W oparciu o taką istniejącą bazę można dokonywać optymalizacji procesów transportowych. Celem pracy jest wskazanie algorytmu, który na bazie wag przypisanych krawędziom grafu nieskierowanego (interpretowanymi jako odległości między dwoma węzłami) wyznacza macierz najkrótszych odległości między wszystkimi węzłami grafu oraz dodatkowo wyznacza ścieżki najkrótszych połączeń. Proces ten prowadzi m.in. do zastąpienia macierzy rzadkiej przez macierzą pełną. Równocześnie proces modelowania stanowi przejście pomiędzy zagadnieniami z zakresu teorii grafów a teorii przestrzeni metrycznych. Tak utworzona macierz pełna może stanowić podstawę do tworzenia bazy pełnych cykli Hamiltona lub innych zagadnień systemów transportowych. Wstępna analiza zaproponowanego tu algorytmu etapowego wskazuje, że jest on porównywalny ze znanymi algorytmami, a w niektórych przypadkach działa nawet szybciej. Kolejnym krokiem w następnej pracy będą czynności odwrotne do opisanych powyżej. Połączenie obu procedur pozwala na kontrolę procesu tworzenia minimalnego grafu rozpinającego wszystkie najkrótsze ścieżki, ewentualnie tworzenie drzewa rozpinającego ścieżki, w których najkrótsze połączenia różnią się od najkrótszych dróg z zadaną z góry dokładnością. Wskazano możliwość wykorzystania wyników w optymalizacji transportu w przemyśle mleczarskim. Słowa kluczowe: spójny graf nieskierowany, macierz odległości, macierz rzadka, optymalizacja, cykl Hamiltona ALGORITHMIZATION OF THE PROCESS DETERMINING THE LENGTH OF PATHS IN EXPANDED NETWORKS Abstract A well-known issue in the professional literature is how to determine the shortest path in an undirected graph with non-negative weighted edges between two network nodes. A variation of this issue is to find the shortest paths between all the node pairs of a graph. Modern techniques allow one to store in the computer memory complete data containing information about the distance between any two network nodes and a sequence of nodes describing the shortest path. On the basis of such existing databases optimisation of transportation processes can be undertaken. This study aims at showing an algorithm that basing on the weights of an undirected graph edges (interpreted as the distance in some node pairs) determines the shortest distance matrix between all the nodes of the graph and additionally determines paths of shortest connections. This process leads to the replacement of a sparse matrix by a full matrix. The simultaneous modelling process forms transition between issues of the graph theory and the theory of metric spaces. The full matrix formed this way may l itself to create the base of complete Hamilton cycles or other issues in transportation systems. An initial analysis of the stage-form algorithm proposed here indicates that it is comparable with known algorithms, and in some cases it works even faster. The next step in the subsequent study will consist in operations being reversed in comparison to the ones described above. Combining both procedures Logistyka 5/2015 153

will allow for controlling the process of creating a minimal graph spanning all the shortest paths, and possibly creating a graph spanning paths, whose shortest connections differ from the shortest paths with predetermined accuracy. The possibility of using the results for optimisation of transport in the dairy industry was shown. Keywords: connected undirected graph, distance matrix, optimization, sparse matrix, Hamiltonian cycle Literatura 1. Baryła-Paśnik M., Piekarski W., Ignaciuk Sz., Piecak A., Wawrzosek J., Kuna-Broniowska I., 2014: Przegląd metod optymalizacji procesów transportowych w przemyśle rolno-spożywczym ze szczególnym uwzględnieniem przemysłu mleczarskiego. Logistyka 2014 nr 6 dodatek CD ROM nr 4, s. 12034-12039 2. Błażewicz J., Pesch E., Sterna M. 2000: The disjunctive graph machine representation of the job shop scheduling problem. European Journal of Operational Research, 127, 317 31. 3. Błażewicz J., Pesch E., Sterna M. 2005: A novel representation of graph structures in web mining and data analysis. Omega vol. 33, 65 71. 4. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. 2007: Wprowadzenie do algorytmów. WNT. 5. Dijkstra E.W. 1959: A note on two problems in connexion with graphs. In Numerische Mathematik, 1, 269 271. 6. Fronczak A., Fronczak P. 2009: Świat sieci złożonych : od fizyki do Internetu. Wydawnictwo Naukowe PWN, Warszawa. 7. Held M., Karp R.M. 1970: The traveling-salesman problem and minimum spanning trees, Operations Research 18, 1138-1162. 8. Held M., Karp R.M. 1971: The traveling-salesman problem and minimum spanning trees: part II. Mathematical Programming 1, 6-25. 9. Knasiecki M. 2005: Grafy i ich reprezentacje. http://www.algorytm.org/klasyczne/grafy-i-ich-reprezentacje.html 10. Kruskal J. B. 1956: On the shortest spanning subtree of a graph and the traveling salesman problem. In Proceedings of the American Mathematical Society, vol. 7, no. 1, 48-50. 11. Odrzywolek A. 2009: Aproksymacja funkcji wielu zmiennych. Instytut Fizyki UJ Kraków http://www.slideshare.net/va00/aproksymacja-funkcji-wielu-zmiennych 12. Rydzak R. 2002: Sieciowe problemy optymalizacji. http://rydzak_ryszard.republika.pl/ 13. Sikora W. (ed.) 2008: Badania operacyjne. PWE, Warszawa. 14. Trzaskalik T. 2008: Wprowadzenie do badań operacyjnych z komputerem. PWE, Warszawa. 15. Wilson R. J. 2012: Wprowadzenie do teorii grafów. Wydawnictwo Naukowe PWN, Warszawa 154 Logistyka 5/2015