55
Algoritmet dhe strukturat e të dhënave

Algoritmet Dhe Strukturat e Te Dhenave - Sllajdet (Pjesa 1-2-3)

Embed Size (px)

DESCRIPTION

ASDFFFFFF

Citation preview

Algoritmet dhe strukturat e të dhënave

Ligjëruesi: Gazmend Bajrami e-mail: [email protected]

Qëllimi: • Algoritmet dhe karakteristikat themelore te tyre. Strukturat e te dhenave dhe tipet e ndryshme

te tyre.

Literatura: • R. Sedgewick: Algorithms in Java, Part 1-5. • Robert LaFore, Data Structures and Algorithms in Java. Sams Publishing, 2003 • T. H. Cormen, C. E. Leiserson und R. I. Rivest: Introduction to Algorithms, MIT Press• K. Mehlhorn, P. Sanders: Algorithms and Data Structures - The Basic Toolbox. Springer,May

2008

ë dhënave

Algoritmet dhe strukturat e të dhënave

Algoritmet d ë dhënave

Algoritmet dhe strukturat e të dhënave Përmbajtja

1.Definimi i algoritmeve dhe strukturave të të dhënave. Problemet themelore të algoritmeve: korrektësia, eficienca,kompleksiteti dhe siguria.

2. Matja e eficiencës se algoritmeve. Analizimi i hyrjeve të algoritmeve dhe notacioni O.

3. Notacioni O në shembuj konkret. Algoritmet e ndryshme të të njejtit problem dhe eficenca e tyre për hyrje të ndryshme.

4. Vargjet dhe Listat. Reprezentimi i sekuencave përmes vargjeve (array) dhe listave. Realizimi i strukturave të të dhënave Stack dhe Queue perms sekuencave.

5. Pemët. Pemët binare. Operacionet bazike ne to, kerkimi futja dhe fshirja e te dhenave.

6. Implementimi i struktures fjalor për Hashing-ut. Hashing with chaining dhe Hashing with linear probing.

7. Analiza dhe shtjellimi i operacioneve bazike në strukturën Heap

8. Rradhitja dhe kërkimi. Bubblesort, Selectionsort, Insertsort,Quicksort,Heap Sort, Mergesort. Kërkimi skuencial dhe kërkimi binar.

Çka është një algoritem dhe strukturë e të dhënave?

Algoritmet dhe strukturat e të dhënave

• Algoritmi: metodë për zgjidhjen e një problem në mënyrë sistematike, hap pas hapi.

• Struktura dhënat : metodë për të ruajtur informacionet.

ë dhënave

Algoritmet dhe strukturat e të dhënave

• Strukturat e të dhënave: Arrays, Lists, Stacks, Queues

• Algoritmet: • Sorting : Bubble sort , Insertion sort, quicksort, mergesort,

heapsort.

• Searching : Binary search tree, hash table etj.

• Algoritmet kan ndikim te gjere ne:• Internet: Web search, packet routing• Computers: file system, compilers• Computer graphics: Movies, video games, virtual reality• Security: Cell phones, e-commerce, voting machines, DES, RSA encryption• Multimedia: MP3, JPG, DivX, HDTV, face recognition

Pse t’i studiojmë Algoritmet?

Algoritmet dhe strukturat e të dhënave

• Për tu bërë një programer ekspert.

Pse t’i studiojmë Algoritmet?

Algoritmet dhe strukturat e të dhënave

Pse t’i studiojmë Algoritmet?• Për të zgjidhur probleme. Për shembull, për gjetur nëse ekziston rruge lidhëse ndërmjet A dhe B.

Algoritmet dhe strukturat e të dhënave

Paraqitja e algoritmeve

• Algoritmet mund te paraqiten me:

• Flow Chart • Pseudo Code • Struktogram

Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Shembuj të algoritmeve për llogaritjen e shumës dhe faktorielit :

Algoritmet dhe strukturat e të dhënave

Pseudo Code

• Pseudo-Code është mënyrë e shkurtër e përshkrimit të një program kompjuterik.

• Në vend të përdorimit të sintaksë së një gjuhe kompjuterike, është përdorur formulim më i përgjithshëm.

• Duke përdorur pseudo-code është më e lehtë për një jo-programer për të kuptuar qëllimin e përgjithshme të programit.

Algoritmet dhe strukturat e të dhënave

Pseudo Code

Algoritmet dhe strukturat e të dhënave

Pseudo Code and Flow Chart

Algoritmet dhe strukturat e të dhënave

• Mbledhja e dy numrave te thjesht me posht eshte paraqitur permes Pseudo code dhe Flow Chart

Struktogrami Kodi

Algoritmet dhe strukturat e të dhënave

Detyrë

Formulo një algoritëm i cili mbledh numrat prej 1 deri në n si

a. Pseudo code b. Flowdiagram

A ka zgjedhje me të thjeshtë? Sum=n*(n+1)/2

Algoritmet dhe strukturat e të dhënave

Detyrë

Formulo një algoritëm i cili i mbledh 5 numrat e pare (tek) duke u nise prej numrit 40 te cilet plotepjestohen me 3 ose 5 mirepo jo me 3 dhe 5

a. Pseudo code b. Flowdiagram

Algoritmet dhe strukturat e të dhënave

Analiza e algoritmeve Pasi një algoritm është ndërtuar për të zgjidhur një problem të caktuar, dy pyetje kryesorelindin:

1. E para është nëse algoritmi i zgjedhur gjithmonë jep rezultat të saktatë të problemit (Korrektësia)

2. E dyta është se si ky algoritem i menaxhon resurset e kompjuter (memoria, koha) (Efikasiteti)

Përgjigja për pyetjen e parë është e thjeshtë, "po" ose "jo", edhe pse zakonisht nuk është e lehtë për të vërtetuar vlefshmërinë e kësaj përgjigjen. Pyetjes se dytë mund ti pergjigjemi duke analizuar kompleksitetin në kohë dhe në nevojë për memorie

Algoritmet dhe strukturat e të dhënave

Analiza e algoritmeve

Atributet e algoritmeve janë

• Korrektësia • Algoritmi duhet të jap rezultat të saktë për të gjitha rastet e mundshme

• Mund të përcaktohet në mënyrë matematikore, shpesh nuk dihet

• Efikasiteti • Analiza kohore: Sa instruksione algoritmi mund të ekzekutoj?

• Analiza e hapsires memoruese: Sa hapsire memoruese algorithm ka nevojë ?

Algoritmet dhe strukturat e të dhënave

Analiza e algoritmeve • Shembull: Rradhitja (Sorting)

Algoritmet dhe strukturat e të dhënave

Sort

HyrjaSekuence e numrave

a1, a2, a3,….,an b1,b2,b3,….,bn

DaljaPermutacioni i sekuences se numrave

2 5 4 10 7 2 4 5 7 10

Korrektësia Për çfarë do hyrje në algoritem dalja do të jetë:

• b1 < b2 < b3 < …. < bn

• b1, b2, b3, …., bn është permutacion i a1, a2, a3,….,an

Korrektësia Për çfarë do hyrje në algoritem dalja do të jetë:

• b1 < b2 < b3 < …. < bn

• b1, b2, b3, …., bn është permutacion i a1, a2, a3,….,an

Koha e ekzekutimi Varet në

• numrin e elementve (n) • si janë (pjesërisht) tër

renditura? • algoritmi

Koha e ekzekutimi Varet në

• numrin e elementve (n) • si janë (pjesërisht) tër

renditura? • algoritmi

Kompleksiteti kohorë Të marrim që funksionet e kohes se dy algoritmeve A dhe B janë gjetur!

Për madhësi hyrëse N Koha e Algoritmi A = TA (N) = 1.000 N Koha e Algoritmi B = TB (N) = N^2

kohëzgjatja = f(madhësia e të dhënave hyrëse)

Cili është më i shpejtë?

Algoritmet dhe strukturat e të dhënave

Kompleksiteti kohorë • Nëse njësia për matjen e kohës se algoritmeve a dhe b është μsec

Algoritmet dhe strukturat e të dhënave

Pra, cila algoritmi është më e shpejtë?

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Krahaso rritjen e tyre relative?

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

O notacioni (“Big-O” Notation)

• Le te jete n madhesia hyrese e nje programi • Le te jete T(n) funksion qe tregon kohen e ekzekutimit• Le te jete f(n) nje funksion tjeter – i thjesht

O notacioni : T(n) = O (f(n)) nese ekzistojnë dy konstante positive c, N ashtu që

|T(n)| ≤ c*|f(n)| per n≥N

Me fjalë tjera me rritje të pakufizuar të n, T(n) nuk rritet më shpejtë se f(n)

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

O notacioni (“Big-O” Notation)

Shembull 1:

• koha e leximit te te dhenva nga disku eshte 10.000 ms• koha e procesimit te seciles prej n te dhenave eshte 10 ms

• T(n)= (10.000 +10*n ) ms • f(n)=n • Le te marrim konstanten c = 20• c*f(n)= 20n

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

O notacioni (“Big-O” Notation)

Shembull 2: gjeni nese 7n-2 është ne O(n).

Arsyetimi: duhet gjetur një konstante reale c> 0 dhe një numër të plotë N> = 1 tilla që 7n-2 <= c*n për çdo n>=N.

Ne kemi zgjedhur c = 7, N = 1 dhe pastaj kemi

7n-2 <7n kur n> = 1

Kështu 7N-2 është O (n)

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

1,00E-01

1,00E+00

1,00E+01

1,00E+02

1,00E+03

1,00E+04

1,00E+05

1,00E+06

1,00E+07

1,00E+08

1,00E+09

1,00E+10

2 4 8 16 32 64 128 256 512 1024n

T(n

)

n

log n

sqrt n

n log n

100n

n^2

n^3

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Algoritmet dhe strukturat e të dhënave

Shembull 1 : Funksioni për të llogaritur shumën e cubes të numrave intexher nga 1 deri n

Kodi:

(1) int calcSum(int n) {(2) int sum = 0;(3) for (int i = 1; i <= n; i++)(4) sum += i * i * i;(5) return sum; } // end calcSum

Hapat në analizën e kodit:Vendosim se cilat janë operacionet themelore që ne do t’i numërojnë : Assignment Increment Loop initialization Comparison Arithmetic operations Return statement

Analiza:Line 1: Skip for nowLine 2: 1 operationLine 3: 1 operation (initialization) + (n + 1) operations (test) + n operations (increment) = 2n + 2 operationsLine 4: 3 arithmetic operations (1 addition + 2 multiplications) executed n times = 3n operationsLine 5: 1 operation

Numri i përgjithshëm i operacioneve = 1 + (2n + 2) 3n + 1 = 5n + 4 operacione

Algoritmet dhe strukturat e të dhënave

Kodi:

(1) for (int i = 0; i < numLoops; i++) (2) for (int j = 0; j < numLoops; j++) (3) sum += 2; // end nested loop example

Analiza e kodit:Supozojmë se ne jemi duke numëruar veprimet njëjtën bazë si në shembullin 1

Fillojme me inner loop, dhe le te jete n = numLoops

Line 2: 1 operation (initialization) + (n + 1) operations (test) + n operations (increment) = 2n + 2 perations Line 3: 1 arithmetic operation (1 addition) executed n times = 1n operations

Numri i përgjithshëm i operacioneve për inner loop= (2n + 2) + 1n = 3n + 2 operacione (linja 2 & 3)Kështu, koha inner loop është O (n), ose koha lineare. Tash kemi outer loop:

Line 1: 1 operation (initialization) + (n + 1) operations (test) + n operations (increment) = 2n + 2 operationsBody of outer loop: Total number of operations for inner loop executed n times = (3n + 2) * n = 3n^2 + 2n operations

Numri i përgjithshëm i operacioneve = 2n + 2 (alineja 1) + 3n ^ 2 + 2n (trupi i lak e jashtme) = 3n ^ 2 + 4n + 2

Kështu, koha e nested loops është O (n ^ 2). Koha e tij është kuadratik (sepse është ngritur në fuqin 2),kështu që është përshkruar si një Algoritmi kuadratike.

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Shembull: Jane dhene N numra te plote, sa kombinime te tresheve japin Shumen zero?

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Zgjidhja

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Koha e ekzekutimit per madhesi me vlera te ndryshme te hyrjes eshte paraqitur ne table.

Kompleksiteti kohorë Algoritmet dhe strukturat e të dhënave

Tipet e të dhënave Algoritmet dhe strukturat e të dhënave

Tipet Statike Tipet e thjeshta

•Integer •Char •Boolean •Pointer/refernce

Tipet e strukturume •Array •String

Tipet Dinamike Listat e Lidhura (linked list) Tree-s

Tipet e të strukturave te te dhënave Algoritmet dhe strukturat e të dhënave

Array

Linked List

TreeQueue Stack

Keto jane disa prej strukturave te te dhenvae qe do ti mesojme ne detaje ne vazhdim

Vektorët/Arrays - në JAVAAlgoritmet dhe strukturat e të dhënave

Vektoret / Arrays Çfare tipi i te dhenave (zakonisht) •Statik •Strukturum

Ne java Array eshte objekt.

Krijimi i nje array në Javaint[] intArray; // referencë në array intArray = new int[100]; // rezervimi i memorjes për 100 elemente

Sintakse alternativeint intArray[]= new int[100]; int intArray[] ={1,4,5,8,2,4,6,5}; int arrayLength = intArray.length

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Çasja ne array. Leximi Vlera = intArray[10]; Percaktimi intArray[10] = Vlera; Detyre.

1. Krijimi i nje array prej 10 elementeve, inicializimi i array me keto vlera {11,5,10,23,44,55,1,6,7,5} 2. Programimi i metodes find(vlera) 3. Programimi i metodes delete(vlera)

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Detyre: Te shkruhet kodi i cili per array {11,5,10,23,44,55,1,6,7,5} e dhene gjene

1. Vleren mesatare te array

2. Vleren maksimale te array

3. Kompjimin e anetarve te array ne nje array tjeter

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Algoritmet dhe strukturat e të dhënave Vektorët/Arrays - në JAVA

Disavantazhet:

1. Nëse një anëtare shtohet ose fshihet nga array, anëtaret e array duhet te zhevndosen

2. Në rastin më të keq, për shtimin ose fshirjen e një anëtari në array merr kohë në O(n)

3. Array kanë gjatësi fikse etj. 

Algoritmet dhe strukturat e të dhënave Listat Lineare

Çka mundet me qenë një listë lineare sipas mendimit tuaj?

Strukture lineare e të dhënave në formën (e1,e2,…,en).e1: elementi i parë i listës en: elementi i i n i listësn: gjatësia e listës

Shembull: Lista e studentëve në baze të emrit.

Algoritmet dhe strukturat e të dhënave Listat Lineare

Operacionet kryesore: Add: shton nje element ne liste Set: percakton vleren e nje elementi Remove: largon nje element nga lista Get: lexon vleren e nje elementi IndexOf: lexon indexin e nje elementi

Operacionet tjeraisEmpty isFull

Algoritmet dhe strukturat e të dhënave Listat Lineare

Algoritmet dhe strukturat e të dhënave Listat Lineare

Algoritmet dhe strukturat e të dhënave Listat Lineare - ushtrim

Algoritmet dhe strukturat e të dhënave Listat Lineare - ushtrim

Rezultati:

YLKUU