Algorytmy i struktury danych (7, 8) Struktury liniowe o podło u zmiennym (w tym: sieci odsyłaczowe) Struktury pier cieniowe Wstęp Bardzo wa na grupa struktur liniowych. S to struktury nie posiadaj ce adresacji (!). Dost p do poszczególnych elementów struktury jest organizowany poprzez WYRÓ NIENIA. W takich strukturach nie dopuszcza si elementów pustych (pokrycie zupełne). Do tych struktur nale : stos, kolejka, talia niesymetryczna i symetryczna, lista jedno- i dwukierunkowa. Dla ka dej wymienionej struktury b d przedstawione: wyró nienia, lista operacji prostych (dynamika struktury), ewentualne uwagi, zastosowania, lista operacji zło onych. 2 Definicja Struktury - stos, kolejka, talia (niesymetryczna i symetryczna) oraz lista (jedno- i dwukierunkowa) to struktury o: podło u liniowym zmiennym, pokryciu zupełnym i dynamice odpowiednio: stosowej, kolejkowej, talii oraz listy. 3
Stos Wyró nienia: wierzchołek stosu, ewentualnie dno stosu. Operacje proste (5 operacji): opró nianie stosu, czy pusty, na zawarto wierzchołka, doł czanie nowego elementu - tylko na wierzchołek, kasowanie elementu - tylko z wierzchołka. Uwagi: struktura pracuje jednym ko cem, okre lana jest jako struktura LIFO (Last In First Out). 4 Stos c.d. Zastosowania: tam, gdzie potrzebna jest realizacja zasady LIFO, np.: algorytmy przegl dania grafu, obliczania warto ci wyra enia, derekursywacja programów, gdy zasada ta jest oboj tna, stos okazuje si najprostsz struktur o zmiennym podło u. Operacje zło one: przegl danie stosu. 5 Kolejka Wyró nienia: pocz tek kolejki, koniec kolejki. Operacje proste (5 operacji): opró nianie kolejki, czy pusta, na zawarto działki pocz tkowej, doł czanie nowego elementu - tylko na koniec, kasowanie elementu - tylko na pocz tku. 6
Kolejka c.d. Uwagi: struktura pracuje obydwoma kra cami niesymetrycznie, okre lana jest jako struktura FIFO (First In First Out). Zastosowania: przede wszystkim jako kolejka zada o jednakowych priorytetach, czekaj cych na wykonanie. Operacje zło one: przegl danie kolejki, konkatenacja kolejek. 7 Talia (półka) niesymetryczna Wyró nienia: koniec lewy i prawy (pocz tek i koniec). Operacje proste (6 operacji): opró nianie talii, czy pusta, na zawarto działki pocz tkowej, doł czanie nowego elementu - na pocz tek i na koniec, kasowanie elementu - tylko na pocz tku. Uwagi: struktura pracuje obydwoma kra cami niesymetrycznie. 8 Talia niesymetryczna c.d. Zastosowania: jako kolejka zada do wykonania przy zało eniu, e zadania dzieli si na zadania z normalnym priorytetem (doł czane na koniec) oraz zadania z priorytetem zwi kszonym (doł czane na pocz tek). Operacje zło one: przegl danie talii, konkatenacja talii. 9
Talia symetryczna Wyró nienia: koniec lewy i prawy (pocz tek i koniec). Operacje proste (8 operacji): opró nianie talii, czy pusta, na zawarto działki pocz tkowej, na zawarto działki ko cowej, doł czanie nowego elementu - na pocz tek i na koniec, kasowanie elementu - na pocz tku i na ko cu. 10 Talia symetryczna c.d. Uwagi: struktura pracuje obydwoma kra cami symetrycznie. Zastosowania: jako kolejka zada przeznaczonych do wykonania dla dwóch wykonawców; ka dy bierze do wykonania w pierwszej kolejno ci zadania swoje, a po wyczerpaniu wykonuje zadania w zasadzie przeznaczone dla drugiego wykonawcy. Operacje zło one: przegl danie talii, konkatenacja talii. 11 Lista Lista jednokierunkowa (niesymetryczna). Wyró nienia: stałe: koniec lewy (pocz tek), koniec prawy (koniec), zmienne: wyró nienie główne (robocze). Operacje proste (9 operacji): opró nianie listy, czy pusta, czy wyró nienie główne na ko cu, na zawarto działki pod wyró nieniem głównym, 12
Lista c.d. Operacje proste c.d.: przesuni cie wyró nienia głównego: na pocz tek, na nast pn działk, doł czanie nowego elementu: po (na prawo od) wyró nieniu głównym, na koniec (niezale nie od poło enia wyró nienia głównego), kasowanie elementu: pod wyró nieniem głównym (wyró nienie główne przesuwa si wtedy je li mo liwe na prawo, je li nie, to na lewo, je li to był ostatni, to wyró nienie znika). Operacje zło one: przegl danie i przeszukiwanie listy, sortowanie listy (zostanie omówione), konkatenacja listy. 13 Lista c.d. Lista dwukierunkowa (symetryczna). Wyró nienia: jak dla listy jednokierunkowej. Operacje proste (12 operacji) - w stosunku do listy jednokierunkowej dochodzi: czy wyró nienie główne na pocz tku, przesuni cie wyró nienia głównego: na koniec, na poprzedni działk. Operacje zło one: jak dla listy jednokierunkowej, ale z mo liwo ci stosowania bardziej dogodnych algorytmów. 14 Lista c.d. Uwagi ogólne dla listy jedno- i dwukierunkowej: stanowi konkurencj dla tablicy, w stosunku do tablicy jest: bardziej elastyczna (podło e), ale nie posiada adresacji, co uniemo liwia albo przynajmniej utrudnia niektóre operacje zło one. Zastosowania: tekst w edytorze, lista rekordów (plik listowy). 15
Lista rekordów W ka dym rekordzie znajduje si pole kluczowe i jego zawarto mo e decydowa o rozmieszczeniu albo stanowi podstaw odszukiwania rekordu. Rozmieszczanie rekordów: chaotyczne, monotoniczne, uwaga: nie mo na rozmieszcza algorytmicznie (jak to było w tablicy), ze wzgl du na brak adresacji. 16 Lista rekordów c.d. Operacje zło one: doł czanie rekordu: w przypadku rozmieszczenia chaotycznego jest to operacja prosta "doł cz na koniec"; w przypadku listy posortowanej = szukaj wła ciwego miejsca + ulokuj rekord w tym miejscu, odszukiwanie rekordu: sekwencyjne (binarne NIE, bo odwołuje si do adresów), kasowanie rekordu: operacja prosta "kasuj pod wyró nieniem" (ewentualnie poprzedzona operacj odszukiwania rekordu do skasowania), sortowanie (monotonizacja) listy - operacja sortowania list jest bardzo wa na (mimo braku mo liwo ci wykorzystania wyszukiwania binarnego) ze wzgl du na ewentualne powi zania struktur listowych z tablicowymi w przetwarzaniu. 17 Lista rekordów - sortowanie Proste wstawianie (nadaje si ): list rozdziela si na dwie niezale ne listy (posortowan i nieposortowan ); przenosi si kolejne elementy z listy nieposortowanej do posortowanej; unika si problemu rozpychania. Proste wybieranie (nadaje si ): rozdziela si na dwie niezale ne listy (posortowan i nieposortowan ); przenosi si z listy drugiej do pierwszej poprzez wybieranie elementu; odpada konieczno zamiany lub rozpychania. Metoda b belkowa (wykonalna): nie jest brana pod uwag ze wzgl du na koszt du ej ilo ci krótkodystansowych przestawie. 18
Lista rekordów sortowanie c.d. Sortowanie szybkie: Quicksort (w zasadzie nie nadaje si ): powsatje niezr czno przy wyborze elementu dziel cego; wymagana jest lista dwukierunkowa, ze wzgl du na przesuwanie si wska ników od lewej i prawej strony równocze nie, Quickersort (modyfikacja nadaj ca si do list): tworzy si trzy listy wyj ciowe - dla mniejszych, równych i wi kszych od elementu dziel cego; wywołuje si to sortowanie dla 1 i 3 listy (np. rekurencyjnie); nast pnie konkatenuje si 1, 2 i 3 list. 19 Lista rekordów sortowanie c.d. Sortowanie szybkie (c.d.): metoda scalania (najlepsza metoda szybka do sortowania list): lista mo e by jednokierunkowa; wariant cykliczny - odszukaj pierwsz i drug seri naturaln od pocz tku listy, scal je i doł cz do ko ca sortowanej listy; kontynuuj, a oka e si, e jest tylko pierwsza seria i to o długo ci całej listy. Ocena zło ono ci sortowania listy rekordów: pełna ocena mo liwa tylko przy znajomo ci zastosowanej implementacji. 20 Implementacja struktur danych Implementacja struktury A na strukturze B oznacza reprezentacj struktury A przez struktur B: struktura A: struktura implementowana (reprezentowana), struktura B:struktura implementuj ca (reprezentuj ca). Definicja: implementacja struktury A na strukturze B to odpowiednio : mi dzy stanami struktur A i B: ka demu dopuszczalnemu stanowi struktury A powinien odpowiada co najmniej jeden dopuszczalny stan struktury B, ka demu stanowi struktury B, który to odpowiada pewnemu stanowi struktury A, powinien odpowiada dokładnie jeden stan tej struktury; 21
Implementacja struktur danych c.d. Definicja implementacji str. A na str. B (c.d.): mi dzy operacjami na strukturach A i B: ka dej operacji prostej O, zdefiniowanej dla A, powinna odpowiada co najmniej jedna operacja O' (niekoniecznie prosta), mo liwa dla B; odpowiednio mi dzy stanami struktur A i B oraz odpowiednio mi dzy operacjami na tych strukturach powinny by ze sob zwi zane nast puj c zasad : je eli stanowi S struktury A odpowiada stan S' struktury B, a operacji O na strukturze A odpowiada operacja O' na strukturze B, to wynikowi operacji dokonanej na strukturze A w stanie S powinien odpowiada wynik operacji O' dokonanej na strukturze B w stanie S'. 22 Implementacja struktur danych c.d. Twierdzenie o rozszerzonej dynamice: je eli struktury A i B maj jednakowe działki, a dynamika struktury B stanowi rozszerzenie dynamiki struktury A o dodatkowe operacje, to struktur A mo na zaimplementowa na strukturze B. Twierdzenie o przechodnio ci implementacji: je eli struktur A da si zaimplementowa na strukturze B, a struktur B da si zaimplementowa na strukturze C, to struktur A da si zaimplementowa na strukturze C (A B i B C A C). 23 Przykłady implementacji Implementacje tablic: "mała" tablica A na "du ej" tablicy B (działki tego samego typu, tablice numerowane, numeracja A jest podprzedziałem numeracji B - nadmiarowe działki nie maj znaczenia, ale jednemu stanowi tablicy implementowanej mo e odpowiada wiele stanów tablicy implementuj cej), wiele "małych" tablic A1, A2,... na du ej tablicy B, 24
Przykłady implementacji c.d. tablice jw., ale działka tablicy B ma mniejsz pojemno ni działka w tablicy A (jednej działce tablicy A odpowiada ci g s siaduj cych ze sob działek tablicy B - ci g powinien liczy tyle działek, by zbiór dopuszczalnych pokry tego ci gu nie był mniejszy ni zbiór dopuszczalnych pokry jednej działki tablicy A), implementacja dowolnej tablicy w pami ci operacyjnej: pami operacyjna jest realnie istniej c tablic liniow numerowan, zwykle o niewielkich działkach (1 bajt); dowoln abstrakcyjn tablic liniow numerowan mo na zaimplementowa na niej podobnie jak to było przedstawione powy ej. 25 Przykłady implementacji c.d. Implementacje struktur liniowych o podło u zmiennym: dynamika struktur liniowych o podło u zmiennym: dynamika talii niesymetrycznej jest rozszerzeniem dynamiki stosu i kolejki, dynamika talii symetrycznej jest rozszerzeniem dynamiki talii niesymetrycznej, dynamika listy jednokierunkowej jest rozszerzeniem dynamiki talii niesymetrycznej, dynamika listy dwukierunkowej jest rozszerzeniem dynamiki talii niesymetrycznej i dynamiki listy jednokierunkowej; 26 Przykłady implementacji c.d. na mocy twierdze o rozszerzonej dynamice i o przechodnio ci implementacji wynika, e stos i kolejk mo na zaimplementowa na obu taliach i listach, a tali niesymetryczn - na obu listach. 27
Przykłady implementacji c.d. Implementacje struktur liniowych o podło u zmiennym na tablicach: dla stosu: stos na tablicy, dwa stosy na tablicy (zł czone dnem lub dna na kra cach tablicy), wiele stosów na tablicy; dla kolejki: kolejka na tablicy (pełzanie), wiele kolejek na tablicy. 28 Przykłady implementacji c.d. Implementacje struktur liniowych o podło u zmiennym na ła cuchach (inaczej: na strukturach odsyłaczowych, wska nikach): stos na ła cuchu jednokierunkowym, kolejka na ła cuchu jednokierunkowym, kolejka na pier cieniu jednokierunkowym, lista jednokierunkowa na ła cuchu jednokierunkowym, lista dwukierunkowa na ła cuchu dwukierunkowym. Struktury pier cieniowe nast pi! 29 Struktury pierścieniowe Struktury pier cieniowe wykazuj du e podobie stwo do liniowych. Podło e pier cieniowe: w przypadku tego podło a ka da działka ma nast pnik, ka da działka ma działk poprzedzaj c i ka da działka jest z ka dej osi galna naprzód i wstecz. W niektórych przypadkach str. pier cieniowe s bardziej praktyczne od liniowych 30
Pierścień jednokierunkowy Definicja: struktura dynamiczna o podło u pier cieniowym zmiennym, o pokryciu zupełnym jednorodnym, o dynamice pier cienia jednokierunkowego. Wyró nienia (obydwa wyró nienia s zmienne): umowny pocz tek pier cienia, wyró nienie główne (robocze). Uwaga: koniec nie jest potrzebny; pocz tek pełni dodatkowo rol ko ca. 31 Pierścień jednokierunkowy c.d. Dynamika (operacje proste): opró nianie struktury, czy pier cie pusty, czy wyró nienie robocze na pocz tku, na zawarto działki pod wyró nieniem roboczym, Przesuwanie wyró nienia: głównego na pocz tek, głównego na działk nast pn, pocz tkowego na miejsce głównego. Doł czanie: na prawo od wyró nienia głównego. Kasowanie: pod wyró nieniem głównym (wyró nienie przesuwa si na działk nast pn lub znika, je li była to ostatnia działka). 32 Pierścień jednokierunkowy c.d. Operacje zło one to np: przeszukiwanie pier cienia. Implementacje: tablicowa: zwarta i lu na, odsyłaczowa: na pier cieniu odsyłaczowym jednokierunkowym. Przykład zastosowania: implementacja multizbioru z wyrównan cz sto ci dost pu do poszczególnych egzemplarzy. 33
Pierścień dwukierunkowy Definicja: struktura dynamiczna o podło u pier cieniowym zmiennym, o pokryciu zupełnym jednorodnym, o dynamice pier cienia dwukierunkowego. Wyró nienia jak dla jednokierunkowego (obydwa wyró nienia s zmienne): umowny pocz tek pier cienia, wyró nienie główne (robocze). Uwaga: koniec nie jest potrzebny; pocz tek pełni dodatkowo rol ko ca. 34 Pierścień dwukierunkowy c.d. Dynamika (operacje proste): opró nianie struktury, czy pier cie pusty, czy wyró nienie robocze na pocz tku, na zawarto działki pod wyró nieniem roboczym, Przesuwanie wyró nienia: głównego na pocz tek, głównego na działk nast pn, głównego na działk poprzedni, pocz tkowego na miejsce głównego. Doł czanie: na prawo i na lewo od wyró nienia głównego. Kasowanie: pod wyró nieniem głównym (wyró nienie przesuwa si na działk nast pn lub znika, je li była to ostatnia działka). 35 Pierścień dwukierunkowy c.d. Operacje zło one to np: przeszukiwanie pier cienia. Implementacje: tablicowa: zwarta i lu na, odsyłaczowa: na pier cieniu odsyłaczowym dwukierunkowym. Przykład zastosowania j.w. 36