background image

Algorytmy – Matematyka Dyskretna

Teoria grafów

Algorytm wyznaczania kodu Prufera

Aby wyznaczyć kod Prufera dla danego drzewa T na zbiorze wierzchołków 
{1, ..., n}, należy:

1. Znaleźć najmniejszy wierzchołek stopnia jeden, powiedzmy „vNiech 

w” będzie wierzchołkiem połączonym z „v”;

2. Zapisać „w oraz usunąć wierzchołek „v” wraz z krawędzią „vw”;

3. Jeśli w drzewie pozostała więcej niż jedna krawędź, to przejść do kroku 

1., w przeciwnym razie zakończyć algorytm.

Otrzymany ciąg liczb jest kodem Prufera dla drzewa T.

Algorytm otrzymywania drzewa z kodu

Dla zadanego ciągu liczb (a1, a2, ..., an-2) wybranych w dowolny sposób ze 
zbioru {1, ..., n}, aby wyznaczyć drzewo T , dla którego ciąg ten jest kodem 
Prufera, należy:

1. Zapisać dwie listy; pierwszą (a1, a2, ..., an-2)  oraz drugą {1,2, ..., n} 

rozpocząć ze zbiorem wierzchołków {1, ..., n} i pustym zbiorem 
krawędzi.

2. Wyznaczyć z drugiej listy najmniejszą liczbę, powiedzmy „i”, która nie 

występuje na pierwszej liście. Usunąć pierwszy element z pierwszej listy, 
powiedzmy „j”, usunąć „i” z drugiej listy oraz dodać do zbioru krawędzi 
ji.

3. Jeśli pierwsza lista zawiera co najmniej jedną liczbę, to przejść do punktu 

2. Jeśli pierwsza lista jest pusta, to druga będzie się składać z dokładnie 
dwóch liczb. Do zbioru krawędzi dodać ostatnią, której wierzchołkami są 
właśnie te liczby i zakończyć algorytm.

1

background image

Algorytm obliczania wartości wyrażenia w postaci postfixowej

Dla kolejnych elementów zapisu wyrażenia:

jeżeli element jest stałą lub zmienną, to wkładamy jego wartość na stos,

jeżeli element jest znakiem operacji, to:

zdejmujemy dwie wartości z wierzchu stosu,

wykonujemy operację na tych wartościach,

obliczoną wartość wkładamy na wierzch stosu,

po przejściu całego wyrażenia jego wartość znajduje się na stosie.

Algorytm przeszukiwania drzewa metodą „wgłąb”

Dane wejściowe: drzewo T .

Odwiedzamy korzeń   i wkładamy go na STOS; zaznaczamy   , jako 
wierzchołek odwiedzony;

Dopóki STOS nie jest pusty, powtarzamy:

Jeżeli „v” jest wierzchołkiem na wierzchu STOSU to sprawdzamy, 
czy istnieje syn „u” wierzchołka „v”, który nie był jeszcze 
odwiedzany. Najpierw sprawdzamy „v0”, a potem „v1”.

Jeżeli takie „u” się znajdzie, to odwiedzamy „u”, wkładamy je na 
wierzch STOSU i zaznaczamy, jako wierzchołek odwiedzony (np. 
skreślamy).

Jeżeli takiego „u” nie ma, to zdejmujemy „v” ze STOSU i cofamy 
się do wierzchołka będącego na stosie pod spodem.

Algorytm przeszukiwania drzewa metodą „wszerz”

Odwiedzamy korzeń drzewa   i wkładamy go do KOLEJKI;

Dopóki KOLEJKA nie jest pusta, powtarzamy:

bierzemy jeden wierzchołek „v” z początku KOLEJKI;

odwiedzamy wszystkich synów wierzchołka „v” i wkładamy je na 
koniec kolejki.

2

background image

Teoria liczb

Algorytm Euklidesa

Aby obliczyć największy wspólny dzielnik dwóch dodatnich liczb naturalnych a
b, powtarzamy aż do skutku:

dopóki  a×b≠0 , wykonuj:

jeżeli  a0 , to  a := a mod b,

w przeciwnym wypadku b := b mod a.

NWD(a, b) =  ab ,

Rozszerzony algorytm Euklidesa

Dane wejściowe: dwie liczby naturalne a,b.

Dane wyjściowe: NWD(a, b)  oraz liczby całkowite x,y  takie, że 

xa + yb = NWD(a, b).

podstaw:  x

a

:=1, y

a

:=0, x

b

:=0, y

b

:=1,

dopóki   a×b≠0 ,  wykonuj:

jeżeli  a0 ,  to  a := a mod b,

x

a

:= x

a

x

b

× 

a÷ ;

y

a

:= y

a

y

b

× 

a÷b ;

w przeciwnym wypadku: b := b mod a,

x

b

:= x

b

x

a

× 

b÷a ;

y

b

:= y

b

y

a

× 

b÷a ;

NWD(a, b): = a + b.

Jeżeli a > 0 , to  := x

a

,  := y

a

;

Jeżeli b > 0 , to  := x

b

,  := y

b

.  

3

background image

Spis treści

Teoria grafów........................................................................................................................................1

Algorytm wyznaczania kodu Prufera..............................................................................................1
Algorytm otrzymywania drzewa z kodu..........................................................................................1
Algorytm obliczania wartości wyrażenia w postaci postfixowej....................................................2
Algorytm przeszukiwania drzewa metodą „wgłąb”........................................................................2
Algorytm przeszukiwania drzewa metodą „wszerz”.......................................................................2

Teoria liczb...........................................................................................................................................3

Algorytm Euklidesa.........................................................................................................................3
Rozszerzony algorytm Euklidesa.....................................................................................................3

4