Mësimi 6 – Shembuj për algoritme

4 min

Rradhitja e Përzgjedhjes (Selection Sort) është një algoritëm që rendit një varg numrash të përzgjedhur. Ky algoritëm mund të bën rradhitjen e numrave të vargut nga më i vogli tek më i madhi, ose e kundërta. Mënyra se si e bën është duke e kontrolluar çdo numër se a është më i madhi në krahasim me të tjerët. Numrin më të madh e vendos në një varg tjetër, dhe kështu me rradhë deri sa të mbarojnë të gjithë numrat e përzgjedhur. Nëse e analizojmë mënyrën e veprimit të këtij algoritmi do e shohim se ka një rradhitje magnitude Θ (order of magnitude) prej n², që dmth se është Θ(n²). Shembull i këtij algoritmi është rradhitja e vargut:

  1. Vargu është: 5,7,2,8,3

  2. Kontrollojmë nëse ka numër më të madh se 5

  3. E gjejmë se numri 7 është më i madh

  4. Kontrollojmë nëse ka numër më të madh se 7

  5. E gjejmë se numri 8 është më i madh, e vendosim të parin

  6. Vargu është tani: 5,7,2,3 | 8

  7. Vazhdojmë me rradhë dhe e kuptojmë se 7 është më i madh

  8. Vargu është tani: 5,2,3 |7,8

  9. Vazhdojmë me rradhë deri sa i rradhisim të gjithë numrat

  10. Kështu në fund kemi vargun: 2,3,5,7,8

Pastaj kemi Kërkimin me rradhë (sequential search), ku algoritmi i kontrollon të gjithë numrat deri sa të gjejë atë që kërkon. Ky algoritëm ka një rradhitje magnitude Θ (order of magnitude) prej n, që dmth se është Θ(n). Një shembull mund të jetë kërkimi i numrit 7 në vargun:

  1. Vargu është: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

  2. Fillojmë me numrin e parë

  3. Numri 1 nuk është numri i kërkuar, vazhdojmë me tjetrin

  4. Numri 2 nuk është numri i kërkuar, vazhdojmë me tjetrin

  5. Këtë e bëjmë deri sa të arrijmë te numri 7

  6. Kështu e gjejmë numrin e kërkuar

Gjithashtu kemi algoritmin e kërkimit binarë (binary search), që kërkon një numër të caktuar në një varg duke filluar nga mesi. Kushti është që vargu të jetë i rradhitur, dhe pastaj algoritmi fillon të kërkojë nga mesi. Nëse numri është më i vogël, atëherë kërkon në gjysmën e parë, nëse është më i madh atëherë kërkon gjysmën e dytë të vargut. Ky algoritëm ka një rradhitje magnitude Θ (order of magnitude) prej lg n, që dmth se është Θ(lg n).Psh, nëse do kërkonim numrin 3 atëherë procedura e këtij algoritmi do ishte kështu:

  1. Vargu është: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

  2. Mesi i vargut është numri 8, ndërsa 3 është më i vogël se 8.

  3. Tani kërkojmë mesin në pjesën majtas

  4. Mesi i gjysmës majtas është 5, ndërsa 3 është më i vogël se 5.

  5. Tani kërkojmë gjysmën e ngelur prej 1,2,3,4,5

  6. Dmth, mesi është numri 3

  7. Kështu e gjejmë numrin e kërkuar

Tani do të përmendim një shembull tjetër më të komplikuar për të treguar rëndësinë e hulumtimit të algoritmeve. Kjo mund të jetë për të zbuluar algoritme për një problem që nuk është i zgjidhur, apo për të ofruar algoritme të reja më efikase për ndonjë problem që tashmë ka një algoritëm të zbuluar më herët. Tepër e rëndësishme është që të gjenden algoritme që do jenë të thjeshtë, të shpejtë dhe mbi të gjitha të saktë.

  • Nëse do të kishim një varg të rradhitur me numrat 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, dhe do të duhej të gjenim numrin 3, atëherë do shohim se nëpërmjet të algorimit ku kërkojmë me rradhë do të gjenim më shpejtë numrin, në krahasim me algoritmin e kërkimit binarë.

  • Por, në qoftë se do të duhej të gjenim ndonjë numër më të madh, atëherë kërkimi binarë është shumë më i shpejtë

Tabela në vazhdim tregon se cili algoritëm është më i shpejtë në qoftë se ndryshon numri i madhësisë së vargut:

  1. 10 numra

    1. Kërkimi binarë – 0.0003 sec

    2. Kërkimi me rradhë – 0.001 sec

    3. Rradhitja me përzgjedhje – 0.01 sec

  2. 50 numra

    1. Kërkimi binarë – 0.0006 sec

    2. Kërkimi me rradhë – 0.005 sec

    3. Rradhitja me përzgjedhje – 0.25 sec

  3. 100 numra

    1. Kërkimi binarë – 0.0007 sec

    2. Kërkimi me rradhë – 0.01 sec

    3. Rradhitja me përzgjedhje – 1 sec

  4. 1,000 numra

    1. Kërkimi binarë – 0.001 sec

    2. Kërkimi me rradhë – 0.1 sec

    3. Rradhitja me përzgjedhje – 1.67 min

.
.
.
.
.

#ReLOaD

Kjo platformë është zhvilluar si pjesë e projektit Robokid të organizatës YEP, i cili zbatohet në kuadër të "Programi rajonal për demokraci lokale në Ballkanin Perëndimor 2 - ReLOaD2 i cili është i financuar nga Bashkimi Evropian (BE), ndërsa e implementon Programi për Zhvillim i Kombeve të Bashkuara (UNDP). Për përmbajtjen e kësaj platforme, si dhe qëndrimet e paraqitura në të, janë përgjegjës vetëm organizata YEP dhe ato në asnjë mënyrë nuk pasqyrojnë pikëpamjet e Bashkimit Evropian (BE) ose të Programit për Zhvillim të Kombeve të Bashkuara (UNDP) .

Copyright © 2023 Techup | Powered by YEP