0% found this document useful (0 votes)
75 views26 pages

Asd Notatki

Uploaded by

Blagoja Mladenov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views26 pages

Asd Notatki

Uploaded by

Blagoja Mladenov
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Tablice haszujące:

Metoda łańcuchowa (te same element jako lista)

Adresacja liniowa (wyznaczenie skoku do kolejnej komórki) jeśli funkcja haszująca wskaże zajęte
pole)

Metoda monte carlo – wyznaczanie pola koła (wpisz koło w kwadrat i strzelaj losowymi punktami z
pp P(koła)/P(kwadratu)

Find Union

GRAFY

BFS, DFS

Algorytm dla grafu napisać i uwaga, pamiętać o podstawowych algorytmach które gdzieś tam pod
spodem działają

Dwuspójne składowe -
Funkcja low wyznacza te same dwuspójne składowe

Inny algorytm: książka – zamiana dwuspójnych składowych na spójne składowe

Zamiana wierzchołków z krawędziami, jeśli graf 2) będzie spójny to graf 1 będzie dwuspójny

Silnie spójne składowe (grafy skierowane) – pomiędzy każdymi wierzchołkami jest


przejście x->y i y->x.

Krawędź wsteczna – łączy dany wierzchołek z jego potomkiem


Krawędź poprzeczna – nie ma żadnej relacji między wierzchołkami
Krawędź w tył – jest relacja potomek przodek

Dowód poprawności:
to oznacza, że nie ma żadnej krawędzi wstecznej która pozwoli nam przeskoczy
v.

Lowback pokazuje, że istnieje krawędź wsteczna V

Low – istnieje krawędź poprzeczna pomiędzy dwoma gałęziami w drzewie przeglądania

Kolorowanie grafu
(planarny)
Liniowo w czasie O(n) a dodatkowo 5 cioma barwami

Algorytmy grafowe:
-Wyznaczanie tras (najkrótszych ścieżek)

Rozproszony równoległy
Switch – separuje ruch sieciowy
Protokół drzewa rozpinającego (STP) zapobieganie zapętleniu, sposób rozproszony

Wyznaczanie drzewa rozpinającego z najmniejszym kosztem


3 algorytmy znajdowania ścieżek: (udowodnij poprawność działania, policz złożoność
(najlepsza implementacja))
1) Dijkstra (prima – dijkstry) (starujemy od danego wierzchołka i wyznaczmy minimalne
drzewo rozpinające) wyznacza ścieżki od danego węzła do każdego innego o
najmniejszym koszcie.
a) minimalne drzewo rozpinające – zbiór krawędzi, które tworzą drzewo z krawędzi
grafu i suma wag krawędzi jest najmniejsza.
2) Kruskal 1956 – (zastanowić się nad implementacją)
tworzymy las węzłów grafu. Każdy węzeł osobne drzewo.
a) wyznaczamy wszystkie krawędzie o najmniejszym koszcie pomiędzy dwoma różnymi
spójnymi składowymi
b) scalamy te wierzchołki i mają wspólnych sąsiadów
Taka krawędź jest bez sensu, bo nie spełnia warunku że łączy dwie różne spójne składowe

Powstało drzewo rozpinające o minimalnym koszcie


W jaki sposób łączyć wierzchołki?? Problem find union O(n^2) lub drzew z kompresją ścieżek
prawie O(n) bo jeszcze logarytm z gwiazdką!

3) Boruvki (krawędzie mają różne wagi (można niby nie))


Wszystkie wierzchołki tworzą niezależne drzewo (tak jak u Kruskala)
Dla każdego wierzchołka wyznacza krawędź która ma minimalną wartość wychodzącą
z wierzchołka

Dlaczego inne?

A chcemy, żeby wybrały tę samą krawędź. Możemy np. ponumerować krawędź


Zadania

Grafika
Podstawowe algorytmy graficzne:

Poprawa algorytmu
Dowolny wielokąt

pq pokrywa się częściowo


ilość przecięć parzysta
a) bok wielokąta pokrywa się z odcinkiem to następne punkty leżą po dwóch różnych stronach
prostej to dodajemy +1 jeśli nie to +0
Otoczka wypukła
najlepsza pesystymiczna złożoność obliczania złożoności otoczki wypukłej

Algorytmy znajdowania otoczky wypukłej:

Algorytm naiwny

Trochę szybszy algorytm:


Potrzebny punkt wewnątrz otoczki wypukłej – bierzemy centroid

Obliczanie kątów!

sinus kąta - konwersja

Funkcja alfa – możemy dzięki niej porównywać kąty ale uwaga wartości funkcji nie są wartościami
kątów !!
Algo do otoczki wypukłej

Algorytm Grahama – potrzebuje punktu w środku

Centroid potrzebny

1) Należy posortować wierzchołki Nlogn, jeśli ma dwa punkty o tym samym kącie to sortujemy
ze względu na odległość od punktu i bierzemy bliższy
2) Bierzemy 3 punkty i sprawdzamy czy środkowy należy do trójkąta, jeśli tak to wyrzucamy z
otoczki

Jeśli jest to usuwamy i bierzemy następny. Jeśli nie to zostawiamy

Złożoność czasowa:
1) Wyznaczenie centroidu O(n)
2) Posortowanie punktów ze wzgl na kąt O(1+nlogn) stosując funkcję alfa
3) Koszty przejścia:
a) Przesunięcie o 1 pozycje
b) usunięcie 1 -go wierzchołka
O(n)

Ostatecznie O(nlogn)

Algorym Jarisa (inaczej algorytm zawijania)

1) Zespół puntków – należy znaleźć otoczkę


2) Bierzemy punkt który jest najniżej wzgl współrzędnych Y
3) I mamy promienie wodzące do reszty punków
4) Wyznacz next punkt – taki o najmniejeszym kącie, jeśli jest kilka bierzemy najbardziej
odległy
5) Dalej przechodzimy do nowego punktu wyznaczonego i to samo robimy
Nawijamy punkty na tę łamaną
sample 2

Policzyć jaka złożoność! Uwzględnić struktury

Dziel i zwyciężaj
1) Dla trzech punktów oczywiste (trójkąt)
2) Posortujmy punkty ze wzgl na wsprółrzędną X
3) Podzielmy je na 2 części

4) Wyznaczamy mniejsze obwiednie wypukłe

5) Bierzemy najbardziej prawy punkt dla lewej obwiedni i szukamy dla każdego punktu z drugiej
obwiedni wektora o największym i najmniejszym kącie

6) Zaznaczone punkty będą na otocze wypukłej


7) Startujemy z zaznaczonych punktów i wyznaczmy najmniejszy kąt wychodzący ze
znalezionych punktów

8) Następnie to samo
9) Robiąc tak w kółko zrobimy obwiednię

Struktury + złożoność !!
Algorytm przyrostowy
1) Podobnie jak poprzednio, sortujemy wzgl wspórzędnej X
2) Bierzemy 3 punkty
3) Potem bierzemy kolejny o najmnieszej wspórzędnej x – owej

4) Patrzymy jak on ma się kątowo do pozostałych


5) Najbardziej odległy o najmniejszym kącie będzie należał do nowej otoczki i o największym
także

Struktury i złożoność!!

Technika zamiatania (studentów z zaliczenia)


1) Z punktów na płaszczyźnie wybrać 2 najbliższe

w kwadracie delta min max 4 pkt z zasady szufladkowej

2)
3) Rozpatrujemy tylko te punkty które są w odległości delta min od miotły

4)
Struktury danych:

Potrzebujmy 4 elemeny mniejsze i 4 większe ale jak wiadomo w AVL możemy w czasie O(logn)
taką operację wykonać
Złożoność czasowa:

1) Modyfikacja strefy aktywnej O(n)


2) Drzewo AVL dla aktywnej strefy O(logn) wstawienie i kasowanie, znajdowanie mniejszych /
większych O(logn) w sumie O(logn) ale sumarcznych zatrzymań n więc O(nlogn)

Cały algorytm w czasie O(nlogn)


poprawność + czas działania
Dowód przez indukcję strukturalną

You might also like