pseudokody algorytmów

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
STRUKTURY DANYCH.
Algorytmy sortowania i porządkowania
Algorytmy sortowania i przeszukiwania
Algorytmy – c.d. złożoność algorytmów struktury danych
Algorytmy – c.d. struktury danych złożoność algorytmów
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Zaawansowane techniki algorytmiczne
Dynamiczne struktury danych Listy, Kolejki, Stosy
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
Programowanie I Rekurencja.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Ciągi de Bruijna generowanie, własności
Geometria obliczeniowa Wykład 2
ALGORYTMY GEOMETRYCZNE.
(ph,pv) oznaczają stopień aproksymacji wielomianowej w kierunkach x i y nrdof = ilość stopni swobody na elemencie = (ph+1)* (pv+1) CAŁKOWANIE NA POJEDYNCZYM.
Dynamiczne struktury danych 1
Rzędy wielkości funkcji
Analiza kosztu zamortyzowanego
Geometria obrazu Wykład 12
Geometria obrazu Wykład 12
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.
Algorytmy i struktury danych
Algorytmy i struktury danych
Podstawy programowania II
Algorytmy i Struktury Danych Sortowanie
Operacje na strukturach listowych
Sortowanie przez kopcowanie
DRZEWA BINARNE Emilia Krukowska.
Algorytmy i struktury danych
Geometria obliczeniowa Wykład 4
Złożone typy danych Listy Tworzenie elastycznych baz danych
Materiały pochodzą z Platformy Edukacyjnej Portalu
Programowanie strukturalne i obiektowe
Geometria obliczeniowa Wykład 5
IV EKSPLORACJA DANYCH Zadania eksploracji danych: klasyfikacja
Algorytmy i Struktury Danych
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
Geometria obliczeniowa Wykład 5 Geometryczne struktury danych 1. Drzewa odcinków 2. Drzewa czwórkowe 3. Drzewa BSP.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
Algorytmy i Struktury Danych Struktury Danych
Algorytmy i Struktury Danych Drzewa BTS, AVL
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Sortowanie: kopce Parent(i)
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAiIS UJ – 2006/ /11/2006Prof. dr hab. Elżbieta Richter-Wąs Wykład 6 Model danych oparty.
Geometria obliczeniowa Wykład 2
Zbiory dynamiczne.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
ALGORYTMY I STRUKTURY DANYCH
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Listy.
Kolejka priorytetowa.
Drzewa.
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

pseudokody algorytmów DRZEWA pseudokody algorytmów

void traverse(link h, void visit(link)) { if (h == 0) return; Rekurencyjne przechodzenie przez drzewo – Funkcje rekurencyjne pobierają jako argument łącze do drzewa i wywołują funkcję visit, której argumentem jest węzeł drzewa. PREORDER void traverse(link h, void visit(link)) { if (h == 0) return; visit(h); traverse(h->l, visit); traverse(h->r, visit); }

INORDER void traverse(link h, void visit(link)) { if (h == 0) return; traverse(h->l, visit); visit(h); traverse(h->r, visit); }

POSTORDER void traverse(link h, void visit(link)) { if (h == 0) return; traverse(h->l, visit); traverse(h->r, visit); visit(h); }

Nierekurencyjne przechodzenie przez drzewo (postorder) void traverse(link h, void visit(link)) { STACK<link> s(max); s.push(h); while (!s.empty()) { visit(h = s.pop()); if (h->r != 0) s.push(h->r); if (h->l != 0) s.push(h->l); }

Przechodzenie za pomocą przekształcania drzewa - algorytm Josepha M Przechodzenie za pomocą przekształcania drzewa - algorytm Josepha M.Morrisa (inorder) while nie koniec if węzeł nie ma lewego syna { odwiedź go; idź w prawo; } else uczyń go prawym synem jego poprzednika; idź do korzenia tego poddrzewa;

void balance ( dane [ ], int pocz, int kon) { if (pocz <= kon) int m=(pocz+kon)/2; wstaw (dane[m]); balance (dane,pocz,m-1); balance (dane, m+1,kon); }

rotacjaprawa (S,O) // można wykonać na węźle dla rotacjaprawa (S,O) // można wykonać na węźle dla // którego istnieje lewy syn { if O nie jest korzeniem zastępujemy O przez S; prawe poddrzewo S staje się lewym poddrzewem O; węzeł O staje się prawym synem węzła S; } D D O S S A B O B C C A

Pierwszy etap algorytmu DSW – prostowanie drzewa. Utwórz_winorośl (korzeń, n) // prawe rotacje na węzłach // mających lewych synów { tmp = korzeń; while (tmp != NULL) if tmp ma lewego syna wykonaj rotację tego syna względem tmp; tmp = węzeł, który został ojcem; } else tmp = węzeł, który jest prawym synem tmp; Pierwszy etap algorytmu DSW – prostowanie drzewa.

Drugi etap - tworzenie drzewa doskonale zrównoważonego W każdym przejściu w dół winorośli co drugi węzeł aż do pewnego miejsca jest rotowany w lewo wokół swego rodzica. Pierwsze przejście jest potrzebne, aby uzyskać różnicę liczby węzłów w winorośli i liczby węzłów w najbliższym pełnym drzewie binarnym. Utwórz_drzewo_doskonałe (n) { m = ; wykonaj n-m rotacji od korzenia; while (m>1) m=m/2; wykonaj m rotacji od korzenia; }

Algorytm wstawiania elementu do kolejki Wstawianie elementu do kolejki realizowane jest jako dodanie do kopca ostatniego liścia; potem następuje odtworzenie własności kopca (poprzez przesuwanie ostatniego liścia ku korzeniowi dopóki nie dojdzie do korzenia lub nie trafi na ojca o mniejszej wartości). WstawDoKolejki (el) { wstaw el na koniec kopca (jako ostatni liść); while ( el nie jest korzeniem i el > rodzic(el) ) zamień miejscami el i rodzic(el); }

Algorytm pobierania elementu z kolejki Pobieranie elementu z kolejki polega na pobraniu elementu z korzenia, zastąpieniu go ostatnim liściem i odtworzeniu własności kopca idąc od korzenia w dół. PobierzZKolejki ( ) { pobierz element z korzenia; wstaw do korzenia element z ostatniego liścia; usuń ostatni liść; //obydwa poddrzewa korzenia są kopcami p=korzeń; while ( p nie jest liściem i p < któregokolwiek swojego dziecka) zamień miejscami p i jego większe dziecko; }