You are on page 1of 28

GRAFET

Pemët
Programi i studimit: Bachelor Informatikë 2
Lektor: Eva Noka

2022-2023
Pemët
Një graf i lidhur dhe pa cikle quhet pemë dhe zakonisht shënohet 𝑻 = 𝑽, 𝑬 .

𝑷𝟒

Graf yll, 𝑲𝟏,𝟖

Një graf pa cikle quhet pyll.


Pemë të rendeve të vogla
𝑻 𝟐, 𝟏 𝑻 𝟑, 𝟐 𝑻 𝟒, 𝟑 𝑻 𝟓, 𝟒

𝑻 𝟔, 𝟓
Pemët
Lemë 2.1. Çdo pemë me të paktën dy kulme ka të paktën dy gjethe. Nëse 𝒗 ∈ 𝑻 është gjethe
në pemën 𝑻 të rendit 𝒏 ≥ 𝟐, atëherë 𝑻 − 𝒗 është pemë e rendit 𝒏 − 𝟏.
Vërtetim. Le të jetë në pemën 𝑻, një shteg maksimal me skaje 𝒖, 𝒗. Meqë 𝑻 nuk ka cikle,
atëherë nga vetia e shtegut maksimal kulmet 𝒖 dhe 𝒗 janë gjethe në 𝑻 .
Le të jetë 𝒗 gjethe në pemën 𝑻. Kulmet e një shtegu që janë të ndryshëm nga skajet, kanë fuqi
të paktën 2, rrjedhimisht kulmi 𝒗 nuk bën pjesë në asnjë 𝒙, 𝒚-shteg në 𝑻, për 𝒙, 𝒚 ≠ 𝒗. Pra,
grafi 𝑻′ = 𝑻 − 𝒗 është i lidhur. Meqë heqja e një kulmi nuk krijon cikël, atëherë 𝑻′ është pa
cikle.
Karakterizimet e Pemëve
𝑻(𝒏, 𝒎) - një graf. Pohimet e mëposhtme janë të njëvlershme:
1. 𝑻 është pemë.
2. 𝑻 është i lidhur dhe çdo brinjë është urë.
3. 𝑻 është pa cikle dhe ka 𝒏 − 𝟏 brinjë.
4. 𝑻 është i lidhur dhe ka 𝒏 − 𝟏 brinjë.
5. Për çdo dy kulme 𝒖, 𝒗 në 𝑻, ekziston 𝒖, 𝒗-shteg i vetëm.
6. 𝑻 është pa cikle maksimal (për çdo 𝒙𝒚 ∉ 𝑬𝑻, 𝑻 + 𝒙𝒚 ka cikël).
Shkurret
Në një digraf 𝑫 = (𝑽, 𝑨), rrënjë quhet një kulm 𝒓 ∈ 𝑽 me vetinë që ekziston rrugë nga 𝒓 në 𝒗,
për çdo kulm 𝒗 ∈ 𝑽.
Përkufizim 2.1. Një digraf 𝑻 = (𝑽, 𝑨) (që nuk ka harqe të kundërt) quhet shkurre në qoftë se ka
rrënjë dhe grafi mbështetës i tij është pemë.
Teoremë 2.2. Për një digraf 𝑻 = (𝑽, 𝑨) (pa harqe të
kundërt), pohimet e mëposhtme janë të njëvlershme:
(i) 𝑻 është shkurre.
(ii) 𝑻 ka rrënjë 𝒓 dhe për çdo kulm 𝒗 ∈ 𝑽 ekziston
rrugë e vetme nga 𝒓 tek 𝒗.
(iii) 𝑻 është pa cikle, ka një kulm 𝒓 ∈ 𝑽 me 𝒅𝒊𝒏 (𝒓) = 𝟎
dhe ∀ 𝒗 ∈ 𝑽\{𝒓}, 𝒅𝒊𝒏 (𝒗) = 𝟏.
(iv) 𝑻 është i lidhur, ka një kulm 𝒓 ∈ 𝑽 me 𝒅𝒊𝒏 (𝒓) = 𝟎
dhe ∀ 𝒗 ∈ 𝑽\{𝒓}, 𝒅𝒊𝒏 (𝒗) = 𝟏.
(v) 𝑻 ka rrënjë dhe |𝑨| = |𝑽| − 𝟏.
Pema përfshirëse
1 3 5
Përkufizim 2.2. Nëngrafi përfshirës i një grafi 𝑮 që është pemë,
quhet pemë përfshirëse e 𝑮.

2 4 6
Teoremë 2.3. Një graf ka pemë përfshirëse atëherë dhe vetëm
atëherë kur është i lidhur.
Vërtetim. (⟹) 𝑮 ka pemë përfshirëse 𝐓 = (𝑽𝑮, 𝑬𝑻) ⟹ për çdo dy
7 8 9
kulme 𝒖, 𝒗 ∈ 𝑽𝑮, ka një 𝒖, 𝒗 – shteg në pemën 𝑻 ⟹ 𝑮 – i lidhur.
(⟸) Le të jetë 𝑮 - i lidhur. Në qoftë se 𝑮 nuk ka cikël ⟹ vetë G
është pemë përfshirëse. 1 3 5
Përndryshe, le të jetë 𝑪 një cikël në 𝑮 dhe 𝒆 ∈ 𝑬(𝑪). 𝑮 − 𝒆 është i
𝒆𝟑 𝑪𝟐 𝒆
𝟐
lidhur, sepse 𝒆 nuk është urë në 𝑮 (teorema 1.3). Përsëritim këtë 𝑪𝟑
procedurë në grafet e njëpasnjëshme që përftohen nga fshirja e një 2 𝑪𝟏 4 6
brinje të një cikli, derisa të kemi një graf T pa cikle, i cili është
𝒆𝟏 𝒆𝟒 𝑪𝟒
pikërisht, pemë përfshirëse e 𝑮. 𝑪𝟓
7 8 9
𝒆𝟓
Kërkimi në grafe
Paraqitja e një grafi me matricën e fqinjësisë ose listën e fqinjësisë, nuk mundëson marrjen e
drejpërdrejtë të informacioneve të ndryshme në lidhje me grafin.
- Supozojmë se i kemi dhënë kompjuterit një graf me listën e fqinjësisë. Duam që kompjuteri të na japë
përgjigje se cilët kulme janë të arritshëm me shtigje nga një kulm i dhënë 𝒔. Me listën e fqinjësisë,
kompjuteri arrin të “shohë” vetëm fqinjët e kulmit 𝒔.
- Njësoj si në një labirinth. Zgjedhje të pakujdesshme na fusin në cikël, pa mundur të arrijmë në të
gjitha pikat e mundshme. Duhet të regjistrojmë informacion për pikat ku kalojmë dhe zgjedhjet që
bëjmë. Shkurt, na duhet një Algoritëm Kërkimi.
- Dy parimet e kërkimit:
𝐴𝑑𝑗[𝐴] → 𝐵 → 𝐷 → 𝐸
Së pari në gjerësi (Breadth First Search, BFS) 𝐴𝑑𝑗[𝐵] → 𝐴 → 𝐶 → 𝐷
Së pari në thellësi (Depth first Search, DFS)
𝐴𝑑𝑗[𝐶] → 𝐵 → 𝐷
𝐴𝑑𝑗[𝐷] → 𝐴 → 𝐶 → 𝐵
𝐴𝑑𝑗[𝐸] → 𝐹 → 𝐺
𝐴𝑑𝑗[𝐹] → 𝐸 → 𝐺
𝐴𝑑𝑗[𝐺] → 𝐸 → 𝐹
𝐴𝑑𝑗[𝐻] → 𝐼
𝐴𝑑𝑗[𝐼] → 𝐻
Kërkimi së pari në gjerësi (BFS)
Kërkimi së pari në gjerësi nis nga një kulm 𝒔 dhe eksploron grafin sipas të gjitha drejtimeve
të mundshme.
Viziton së pari të gjithë fqinjët e 𝒔 – niveli i parë i kërkimit
Nga çdo fqinj i 𝒔, viziton fqinjët e tij të pavizituar më parë – niveli i dytë i kërkimit
Vazhdohet kështu derisa nuk mund të vizitohen më kulmë të reja.
𝐿# 𝐿$ 𝐿% 𝐿& 𝐿' 𝑳𝟎 = 𝒔
𝑳𝟏 : fqinjët e kulmit 𝒔 ⇒ kulmet me largesë 𝟏 nga 𝒔
4 5 6 𝑳𝟐 : fqinjët e 𝐿$ që nuk janë në 𝐿$ ⇒ kulmet me
1 largesë 𝟐 nga 𝒔
𝑳𝟑 : fqinjët e 𝐿% që nuk janë në 𝐿$ , 𝐿% ⇒kulmet me
3 9 10 largesë 𝟑 nga 𝒔
••• •••
2 𝑳𝒋
𝑳𝒋-𝟏 : fqinjët e 𝐿. që nuk janë në 𝐿$ , 𝐿% , … ,𝐿. ⇒ kulmet me
8 14 largesë 𝒋 + 𝟏 nga 𝒔
7 Gjatë një kërkimi BFS:
11 12
- mund të gjejmë largesën e çdo kulmi nga kulmi 𝒔.
13 - përcaktojmë një pemë përfshirëse të komponëntes së
lidhur që përmban kulmin 𝒔, duke regjistruar brinjët
sipas të cilave zbulohen kulmet.
Algoritmi së pari në gjerësi (BFS)
𝐸 𝐵𝐴𝑅𝐷𝐻Ë (kur kulmi 𝒖 nuk është zbuluar ende)
𝒖. 𝒏𝒈𝒋𝒚𝒓𝒂
𝐸 𝑍𝐸𝑍Ë (kur zbulohet kulmi 𝒖)
Për çdo kulm 𝒖, tre atribute:
𝒖. 𝝅 paraardhësi i kulmit 𝒖, kulmi prej të cilit zbulohet 𝒖
𝒖. 𝒅 largesa e kulmit 𝒖 nga kulmi 𝒔
- Algoritmi përdor një listë 𝑳, e cila operon me parimin e radhës (FIFO- First In First Out):
kur një kulm 𝒖 vizitohet për herë të parë, shtohet në fund të listës me operacionin 𝑺𝑯𝑻𝑶(𝑳, 𝒖) dhe
ndryshon ngjyrën në 𝐸 𝑍𝐸𝑍Ë .
- Shqyrtimi i kulmeve (kontrolli i fqinjëve të tyre) bëhet sipas renditjes:
zgjidhet kulmi 𝒖 që është i pari në listë dhe fshihet prej saj me operacionin 𝒖 = 𝑭𝑺𝑯𝑰(𝑳).
Algoritmi së pari në gjerësi (BFS)
Algoritëm së pari në gjerësi (BFS)
Input: Një graf (digraf) 𝑮 = (𝑽, 𝑬) dhe një kulm 𝒔 ∈ 𝑽.
Output: Vektorët 𝒅 dhe 𝝅, secili me gjatësi 𝒏 = |𝑽|, që japin përkatësisht
largesën nga 𝒔 dhe paraardhësin e secilit kulm.
1. Për çdo kulm 𝑢 ∈ 𝑉(𝐺) − {𝑠}
2. 𝑢. 𝑛𝑔𝑗𝑦𝑟𝑎 =E_BARDHË
3. 𝑢. 𝜋 = 𝑁𝑈𝐿𝐿
4. 𝑢. 𝑑 = ∞
5. 𝑠. 𝑛𝑔𝑗𝑦𝑟𝑎 = E_ZEZË
6. 𝑠. 𝜋 = 𝑁𝑈𝐿𝐿
7. 𝑠. 𝑑 = 0
8. Krijo një rradhë 𝐿 = ∅
9. 𝑆𝐻𝑇𝑂(𝐿, 𝑠)
10. sa herë 𝐿 ≠ ∅
11. 𝑢 = 𝐹𝑆𝐻𝐼(𝐿)
12. për çdo 𝑣 ∈ 𝐴𝑑𝑗[𝑢]
13. në qoftë se 𝑣. 𝑛𝑔𝑗𝑦𝑟𝑎 == E_BARDHË
14. 𝑣. 𝑛𝑔𝑗𝑦𝑟𝑎 =E_ZEZË
15. v.d=u.d+ 1
16. v.π=u
17. 𝑆𝐻𝑇𝑂(𝐿, 𝑣)
Algoritmi së pari në gjerësi (BFS)
(𝑢. 𝜋, 𝑢. 𝑑) (1,1) (6,4) (7,5) (11,5)
𝐿= 1 2 𝐴𝑑𝑗[1] → 2 → 3 → 5
7 8 13
𝐿 = 2, 3, 5 𝐴𝑑𝑗[2] → 1 → 3
(1,1)
𝐿 = {3, 5} (−, 0) 1 (10,4) 𝐴𝑑𝑗[3] → 1 → 2 → 4 → 5
3
𝐿 = 5, 4 9 𝐴𝑑𝑗[4] → 3 → 5 → 6 → 10
(4,3) 𝐴𝑑𝑗[5] → 1 → 3 → 4
𝐿 = {4}
6 11 12
𝐿 = 6, 10 𝐴𝑑𝑗[6] → 4 → 7 → 10
(10,4) (11,5)
𝐿 = {10, 7} 𝐴𝑑𝑗[7] → 6 → 8 → 9
5 4 10 𝐴𝑑𝑗[8] → 7 → 11
𝐿 = 7, 9, 11 (1,1)
(3,2) (4,3) 𝐴𝑑𝑗[9] → 7 → 10
𝐿 = 9, 11, 8
𝐴𝑑𝑗[10] → 4 → 6 → 9 → 11
𝐿 = 11, 8
𝐴𝑑𝑗[11] → 8 → 10 → 12 → 13
𝐿 = 8, 12, 13
𝐴𝑑𝑗[12] → 11 → 13
𝐿 = 12, 13
𝐴𝑑𝑗[13] → 11 → 12
𝐿 = 13
𝐿=∅
Kërkimi së pari në thellësi (DFS)
Kërkimi së pari në thellësi nga kulmi i nisjes 𝒔 ndjek një brinjë drejt një kulmi fqinjë 𝒖.
- Tek 𝒖 gjen një brinjë që të çon tek një tjetër kulm fqinjë me të.
- Kërkimi vijon duke ndjekur kështu, një shteg që zgjatet në “thellësi” të grafit, derisa arrin një
“pikë të vdekur”, një kulm 𝒗 që i ka të gjithë fqinjët e vizituar.
- Në këtë moment, bën kthim prapa përgjatë shtegut të ndjekur, derisa arrin në një kulm që ka një
fqinj të pavizituar më parë. Prej këtej, ndjek sërish një shteg që zbulon kulme të reja.

2
7 8 13 14

1 3
9

6 11 12 15

5 4 10

- Në qoftë se grafi nuk është i lidhur, pas eksplorimit të një komponenteje të lidhur, zgjidhet
një kulm ende i pavizituar, prej të cilit rinis një kërkim i ri DFS.
- Procesi përfundon pasi të jenë vizituar të gjitha kulmet.
Algoritmi së pari në thellësi (DFS)
𝐸 𝐵𝐴𝑅𝐷𝐻Ë kur kulmi 𝒖 nuk është zbuluar ende
𝒖. 𝒏𝒈𝒋𝒚𝒓𝒂 𝐺𝑅𝐼 kur zbulohet kulmi 𝒖
𝐸 𝑍𝐸𝑍Ë kur përfundon kontrolli i fqinjëve të 𝒖
Për çdo kulm 𝒖, katër atribute:
𝒖. 𝝅 paraardhësi i kulmit 𝒖, kulmi prej të cilit zbulohet 𝒖
𝒖. 𝒛 koha e zbulimit të kulmit 𝒖 𝑘𝑢𝑟 𝒖 𝑚𝑒𝑟𝑟 𝑛𝑔𝑗𝑦𝑟ë 𝐺𝑅𝐼
𝒖. 𝒑 koha e përfundimit të kulmit 𝒖 (𝑘𝑢𝑟 𝒖 𝑚𝑒𝑟𝑟 𝑛𝑔𝑗𝑦𝑟ë 𝐸 𝑍𝐸𝑍Ë)
- Koha 𝒕 është një variabël global me vlerë 𝒕 = 𝟎 në momentin e fillimit.
kur 𝑧𝑏𝑢𝑙𝑜ℎ𝑒𝑡 një kulm 𝒖: 𝒕 = 𝒕 + 𝟏; 𝒖. 𝒛 = 𝒕; 𝒖. 𝒏𝒈𝒋𝒚𝒓𝒂 = 𝐺𝑅𝐼
- 𝒕 rritet me 𝟏 në dy raste:
kur 𝑝ë𝑟𝑓𝑢𝑛𝑑𝑜𝑛 kontrolli i fqinjëve të 𝒖: 𝒕 = 𝒕 + 𝟏; 𝒖. 𝒑 = 𝒕; 𝒖. 𝒏𝒈𝒋𝒚𝒓𝒂 = 𝐸 𝑍𝐸𝑍Ë

- Meqë për çdo kulm regjistrohen dy kohë, atëherë koha në kulme merr vlera nga 1 në 𝟐|𝑽|.
- Për çdo kulm 𝒖: 𝒖. 𝒛 < 𝒖. 𝒑
Algoritmi së pari në thellësi (DFS)
Algoritëm së pari në thellësi (DFS)
Input: Një graf (digraf) 𝑮 = (𝑽, 𝑬).
Output: Vektorët 𝒛, 𝒑 dhe 𝝅, secili me gjatësi 𝒏 = |𝑽|,
që japin përkatësisht kohën e zbulimit, kohën e
përfundimit dhe paraardhësin e secilit kulm.
𝑫𝑭𝑺(𝑮) 𝑫𝑭𝑺 − 𝑽𝒊𝒛𝒊𝒕𝒐(𝑮, 𝒖)
1. për çdo kulm 𝑢 ∈ 𝑉(𝐺) 1. 𝑡 = 𝑡 + 1 //sapo është zbuluar kulmi i bardhë u
2. 𝑢. 𝑛𝑔𝑗𝑦𝑟𝑎 = E_BARDHË 2. 𝑢. 𝑧 = 𝑡
3. 𝑢. 𝜋 = 𝑁𝑈𝐿𝐿 3. 𝑢. 𝑛𝑔𝑗𝑦𝑟𝑎 = GRI
4. 𝑢. 𝑧 = ∞ 4. për çdo kulm 𝑣 ∈ 𝐴𝑑𝑗[𝑢] //kontrollon brinjët uv
5. 𝑢. 𝑝 = ∞ 5. në qoftë se 𝑣. 𝑛𝑔𝑗𝑦𝑟𝑎 == E_BARDHË
6. 𝑡= 0 6. 𝑣. 𝜋 = 𝑢
7. për çdo kulm 𝑢 ∈ 𝑉(𝐺) 7. 𝐷𝐹𝑆 − 𝑉𝑖𝑧𝑖𝑡𝑜(𝐺, 𝑣)
8. në qoftë se 𝑢. 𝑛𝑔𝑗𝑦𝑟𝑎 = E_BARDHË 8. 𝑢. 𝑛𝑔𝑗𝑦𝑟𝑎 = E_ZEZË //përfundon kulmi u
9. 𝐷𝐹𝑆 − 𝑉𝑖𝑧𝑖𝑡𝑜(𝐺, 𝑢) 9. 𝑡 = 𝑡 + 1
10. 𝑢. 𝑝 = 𝑡
Algoritmi së pari në thellësi (DFS)
a b c d 𝐴𝑑𝑗[𝑎] → 𝑏 → 𝑟
1/10 2/ 7 3/ 6 11/ 22 𝐴𝑑𝑗[𝑏] → 𝑐 → 𝑠
𝐴𝑑𝑗[𝑐] → 𝑠
𝐴𝑑𝑗[𝑑] → 𝑐 → 𝑢
v x
𝐴𝑑𝑗[𝑟] → 𝑠
8/ 9 4/ 5 12/21 13/20 14/ 19
𝐴𝑑𝑗[𝑠] → 𝑎
r s u 𝐴𝑑𝑗[𝑢] → 𝑐 → s→ 𝑣→ 𝑦
𝐴𝑑𝑗[𝑣] → 𝑑 → 𝑥 → 𝑧
16/17 15/18 𝐴𝑑𝑗[𝑥] → 𝑧
𝐴𝑑𝑗[𝑦] → 𝑧
y z
𝐴𝑑𝑗[𝑧] → 𝑦
Zbatim i Algoritmit DFS
Gjetja e komponenteve të lidhura fort të një digrafi:
Për një digraf 𝑫 = (𝑽, 𝑨), digrafi i transpozuar i tij 𝑫𝑻 = (𝑽, 𝑨𝑻 ) ka bashkësi të kulmeve 𝑽 , ndërsa
bashkësia e harqeve 𝑨𝑻 përcaktohet 𝑨𝑻 = 𝒖, 𝒗 : (𝒗, 𝒖) ∈ 𝑨 .
Komponentet e lidhura fort 𝑫
1. 𝐷𝐹𝑆(𝐷) për të përcaktuar për çdo kulm 𝑢 ∈ 𝑉, kohën e zbulimit 𝑢. 𝑧 dhe kohën e përfundimit 𝑢. 𝑝.
2. Ndërto digrafin 𝐷 0 .
3. 𝐷𝐹𝑆(𝐷 0 ) duke shqyrtuar kulmet në procedurën e përgjithshme të 𝐷𝐹𝑆 sipas rendit zbritës të kohëve
të përfundimit të tyre 𝑢. 𝑝 të llogaritura në 1.
4. Kulmet e çdo shkurreje të përcaktuar në 3 janë kulmet e komponenteve të lidhura fort të digrafit 𝐷.
a b c d a b c d

v x v x

r s u r s u

abcrs duv
y z y z

yz x
Zbatim i Algoritmit DFS
Renditja topologjike në një digraf pa cirkuite (DAG)

pa cirkuite:

me cirkuite:
Renditja topologjike
Për një digraf pa cirkuite 𝑫 = (𝑽, 𝑨), të përcaktohet një renditje e kulmeve të tij,
në mënyrë që të gjitha varësitë të respektohen.
Shembuj:
• Përcaktimi i radhës së instalimit të një numri paketash që respekton varësitë e tyre nga njëra-tjetra.
• Radha e zhvillimit të lëndëve të një program studimi duke respektuar njohuritë paraprake që
kërkon secila prej tyre.

A1 A2 C3
X Y
Y “varet” nga X D3
Lënda X duhet zhvilluar para Y B3 C1
B1 D2

B2 C2
D1
Zbatim i Algoritmit DFS
Për një digraf pacirkuite 𝑫 = (𝑽, 𝑨), të përcaktohet një renditje e kulmeve te tij në
mënyrë që të gjitha varësitë të respektohen.
Ç’do të thotë të respektohen të gjitha varësitë?
Të përcaktojmë një renditje të tillë të kulmeve që:
Për çdo hark (𝒖, 𝒗) ∈ 𝑨, kulmi 𝒖 të shfaqet para kulmit 𝒗.

A1 A2 C3
X Y
Y “varet” nga X D3
Lënda X duhet zhvilluar para Y B3 C1
B1 D2

B2 C2
D1
Zbatim i Algoritmit DFS
Zgjidhja do të ishte një renditje horizontale e kulmeve të digrafit,
ku të gjitha harqet kanë orientimin nga e majta në të djathtë.

A1 A2 C3

D3
B3 C1
B1 D2

B2 C2
D1
Një renditje korrekte:

B1 B2 A1 B3 C1 C2 D2 D1 A2 C3 D3
Zbatim i Algoritmit DFS
Zgjidhja do të ishte një renditje horizontale e kulmeve të digrafit, ku të gjitha
harqet kanë drejtimin nga e majta në të djathtë.

A1 A2 C3

D3
B3 C1
B1 D2

B2 C2
D1
Një tjetër renditje korrekte:

A1 A2 B1 B3 C1 C3 B2 C2 D2 D3 D1
Zbatim i Algoritmit DFS
1. Zbatojmë kërkimin DFS z:2 z:3
p:7 p:6
z:1
p:18 A1 A2 C3
z:4
z:13
D3 p:5
B3 C1 z:9 p:14
z:19 z:8 p:16
p:22 B1 p:17 D2

B2 C2 z:11
z:20
p:21 z:10 D1 p:12
p:15
2. Rendisim kulmet sipas rendit zbritës të kohëve të përfundimit të tyre.

B1 B2 A1 B3 C1 C2 D2 D1 A2 C3 D3
p:22 p:21 p:18 p:17 p:16 p:15 p:14 p:12 p:7 p:6 p:5
Pema përfshirëse minimum
Në grafin e dhënë 𝑮 = 𝑽, 𝑬 :
Kulmet - 10 kompjutera që duam t’i lidhim në një rrjet. 3 8
1 3 5
Brinjët - lidhjet e drejtpërdrejta të mundshme me
2 5
kostot përkatëse - vlerat numerike përbri çdo brinje. 6 4 5
2
Ky problem, në termat e teorisë së grafeve kërkon gjetjen e 3 6
2 4 6 10
një nëgrafi përfshirës optimal të një grafi me pesha.
9 6 5
Grafi me pesha, është një graf 𝑮 i shoqëruar me një funksion 8
𝝎: 𝑬𝑮 → 𝑹5, që quhet funksion peshë. 7 8 9
Pesha 𝝎(𝑻) e një peme përfshirëse 𝑻 të një grafi të lidhur 8 10

𝑮 është:

𝝎 𝑻 = š𝝎 𝒆
𝒆∈𝑬𝑻
Duam të gjejmë një pemë përfshirëse 𝑻∗ me peshë minimum,
pra: 𝝎(𝑻∗) ≤ 𝝎(𝑻), për çdo 𝑻-pemë përfshirëse në 𝑮. Ky
quhet problemi i pemës përfshirëse minimum (MST).
Algoritmi Kruskal
- Algoritmi Kruskal nis nga nëngrafi me bashkësi kulmesh 𝑽𝑮 dhe bashkësi boshe brinjësh 𝑬𝑻 = ∅.
- Shqyrton një e nga një të gjitha brinjët e grafit 𝑮 sipas rendit jozbritës të peshave, me synimin që
pema përfshirëse të ketë peshë sa më të vogël.
- Shqyrtimi i një brinje 𝒆 nënkupton shtimin e saj në bashkësinë 𝑬𝑻, me kusht që të mos krijojë cikël
me brinjët aktuale të 𝑬𝑻 -së, përndryshe vijohet me shqyrtimin e brinjës pasardhëse.

e 36 37 13 46 34 49 56 5 10 12 48 6 10 35 78 9 10 27 89
𝜔(𝑒) 2 2 3 3 4 5 5 5 6 6 6 8 8 8 9 10

3 8 3
1 3 5 1 3 5
2 5 2 5
6 4 5 6 5
2 2
3 6 3
2 4 6 10 2 4 6 10

9 6 5 6 5
8
7 8 9 7 8 9
8 10
Algoritmi Kruskal
Algoritëm Kruskal
Input: Një graf 𝑮 = (𝑽, 𝑬) i lidhur dhe një funksion 𝝎: 𝑬 → 𝑹5.
Output: Bashkësia e brinjëve 𝑬𝑻 të pemës përfshirëse minimum.
1. Renditen brinjët e grafit 𝐺 sipas peshës 𝜔 në rendin jozbritës.
2. 𝐸: = ∅
3. Për çdo brinjë 𝑒 ∈ 𝐸 e zgjedhur sipas renditjes,
4. Në qoftë se grafi 𝑉, 𝐸: ∪ 𝑒 nuk ka cikël,
5. 𝐸: = 𝐸: ∪ {𝑒}
Algoritmi Prim
Algoritëm Prim - Algoritmi Prim zgjedh një kulm 𝒔 të
Input: Një graf 𝑮 = (𝑽, 𝑬) i lidhur dhe një grafit 𝑮 dhe “rrit” një pemë mbi të, duke
funksion 𝝎: 𝑬 → 𝑹5 shtuar në çdo hap një brinjë dhe një kulm
Output: Një pemë përfshirëse minimum (një gjethe). Konkretisht, shënojmë 𝑻 =
𝑻(𝑺) = (𝑺, 𝑬𝑻). (𝑺, 𝑬𝑻) pemën e krijuar nga algoritmi
1. Zgjidh një kulm 𝑠 ∈ 𝑉. deri në një hap të caktuar.
2. 𝑆 = {𝑠} - Fillimisht, 𝑺 = {𝒔} dhe 𝑬𝑻 = ∅.
3. 𝐸: = ∅ - Në çdo iteracion, zgjidhet një brinjë 𝒆 që
4. sa herë që 𝑆 ≠ 𝑉 ka peshën më të vogël në bashkësinë e
5. Zgjidh brinjën 𝑒 = 𝑢𝑣 ∈ 𝐸, ku 𝑢 ∈ 𝑆dhe 𝑣 ∉ 𝑆, brinjëve të prerjes [𝑺, 𝑽\𝑺]. Pra, 𝒆 = 𝒖𝒗,
që ka peshën më të vogël ku 𝒖 ∈ 𝑺 dhe 𝒗 ∈ 𝑽\𝑺.
6. 𝑆 = 𝑆 ∪ {𝑣} - Brinja 𝒆 së bashku me kulmin 𝒗 i shtohen
7. 𝐸𝑇 = 𝐸𝑇 ∪ {𝑒} pemës 𝑻.
- Algoritmi përfundon kur 𝑺 = 𝑽.
Fillim: 𝑠 = 1; 𝑆 = 1 ; 𝑉\𝑆 = 2,3,4,5,6,7,8,9,10 ; 𝐸" = ∅;
It.1: 𝑆, 𝑉\𝑆 = 12, 13 , zgjedhim 13; 𝑆 = 1, 3 ; 𝑉\𝑆 = 2,4,5,6,7,8,9,10 ; 𝐸" = 13 ;
It. 2: 𝑆, 𝑉\𝑆 = 12, 34, 35, 36, 37 , zgjedhim 36; 𝑆 = 1, 3,6 ; 𝑉\𝑆 = 2,4,5,7,8,9,10 ; 𝐸" = 13, 36 ;
It. 3: 𝑆, 𝑉\𝑆 = 12, 34, 35, 37, 64, 65, 6 10 , zgjedhim 37; 𝑆 = 1, 3,6,7 ; 𝑉\𝑆 = 2,4,5,8,9,10 ; 𝐸" = 13, 36,37 ;
It. 4: 𝑆, 𝑉\𝑆 = 12, 34, 35, 64, 65, 6 10, 72, 78 , zgjedhim 64; 𝑆 = 1, 3,6,7,4 ; 𝑉\𝑆 = 2,5,8,9,10 ; 𝐸" = 13, 36,37,64 ;
It. 5: 𝑆, 𝑉\𝑆 = 12, 35, 65, 6 10, 72, 78, 48, 49 , zgjedhim 65; 𝑆 = 1, 3,6,7,4,5 ; 𝑉\𝑆 = 2,8,9,10 ; 𝐸" = 13, 36,37,64,65 ;
It. 6: 𝑆, 𝑉\𝑆 = 12, 6 10, 72, 78, 48, 49,5 10 , zgjedhim 49; 𝑆 = 1, 3,6,7,4,5,9 ; 𝑉\𝑆 = 2,8,10 ; 𝐸" = 13, 36,37,64,65,49 ;
It. 7: 𝑆, 𝑉\𝑆 = 12, 6 10, 72, 78, 48, 5 10,98,9 10 , zgjedhim 5 10; 𝑆 = 1, 3,6,7,4,5,9,10 ; 𝑉\𝑆 = 2,8 ; 𝐸" = 13, 36,37,64,65,49,5 10 ;
It. 8: 𝑆, 𝑉\𝑆 = 12, 72, 78, 48, 98 , zgjedhim 12; 𝑆 = 1, 3,6,7,4,5,9,10,2 ; 𝑉\𝑆 = 8 ; 𝐸" = 13, 36,37,64,65,49,5 10,12 ;
It. 9: 𝑆, 𝑉\𝑆 = 78, 48, 98 , zgjedhim 48; 𝑆 = 1, 3,6,7,4,5,9,10,2,8 ; 𝑉\𝑆 = ∅; 𝐸" = 13, 36,37,64,65,49,5 10,12,48 .

3 8 3
1 3 5 1 3 5
5 2 5
6 2 6 5
4 5
2 2
3 6 3
2 4 6 10 2 4 6 10

5 6 5
9 6
8
7 8 9 7 8 9
8 10

You might also like