Vous êtes sur la page 1sur 55

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave


Ligjruesi: Gazmend Bajrami e-mail: gazmend.bajrami@ubt-uni.net Qllimi: 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

dhnave

Algoritmet dhe strukturat e t dhnave


Prmbajtja
1.Definimi i algoritmeve dhe strukturave t t dhnave. Problemet themelore t algoritmeve: korrektsia, eficienca,kompleksiteti dhe siguria.

dhnave 2. Matja e eficiencs se algoritmeve. Analizimi i hyrjeve t algoritmeve dhe notacioni O.

Algoritmet d

3. Notacioni O n shembuj konkret. Algoritmet e ndryshme t t njejtit problem dhe eficenca e tyre pr hyrje t ndryshme. 4. Vargjet dhe Listat. Reprezentimi i sekuencave prmes vargjeve (array) dhe listave. Realizimi i strukturave t t dhnave Stack dhe Queue perms sekuencave. 5. Pemt. Pemt binare. Operacionet bazike ne to, kerkimi futja dhe fshirja e te dhenave.

6. Implementimi i struktures fjalor pr Hashing-ut. Hashing with chaining dhe Hashing with linear probing.
7. Analiza dhe shtjellimi i operacioneve bazike n strukturn Heap 8. Rradhitja dhe krkimi. Bubblesort, Selectionsort, Insertsort,Quicksort,Heap Sort, Mergesort. Krkimi skuencial dhe krkimi binar.

Algoritmet dhe strukturat e t dhnave

ka sht nj algoritem dhe struktur e t dhnave?


Algoritmi: metod pr zgjidhjen e nj problem n mnyr sistematike, hap pas hapi. Struktura dhnat : metod pr t ruajtur informacionet.

Algoritmet dhe strukturat e t dhnave

Strukturat e t dhnave: Arrays, Lists, Stacks, Queues Algoritmet:

dhnave

Sorting : Bubble sort , Insertion sort, quicksort, mergesort, heapsort. Searching : Binary search tree, hash table etj.

Algoritmet dhe strukturat e t dhnave

Pse ti studiojm Algoritmet?


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

Algoritmet dhe strukturat e t dhnave

Pse ti studiojm Algoritmet?


Pr tu br nj programer ekspert.

Algoritmet dhe strukturat e t dhnave

Pse ti studiojm Algoritmet?


Pr t zgjidhur probleme. Pr shembull, pr gjetur nse ekziston rruge lidhse ndrmjet A dhe B.

Algoritmet dhe strukturat e t dhnave

Paraqitja e algoritmeve
Algoritmet mund te paraqiten me:
Flow Chart Pseudo Code Struktogram

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave


Shembuj t algoritmeve pr llogaritjen e shums dhe faktorielit :

Algoritmet dhe strukturat e t dhnave


Pseudo Code Pseudo-Code sht mnyr e shkurtr e prshkrimit t nj program kompjuterik. N vend t prdorimit t sintaks s nj gjuhe kompjuterike, sht prdorur formulim m i prgjithshm. Duke prdorur pseudo-code sht m e leht pr nj jo-programer pr t kuptuar qllimin e prgjithshme t programit.

Algoritmet dhe strukturat e t dhnave


Pseudo Code

Algoritmet dhe strukturat e t dhnave


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

Algoritmet dhe strukturat e t dhnave

Struktogrami

Kodi

Algoritmet dhe strukturat e t dhnave

Detyr
Formulo nj algoritm 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 dhnave

Detyr
Formulo nj algoritm 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 dhnave

Analiza e algoritmeve
Pasi nj algoritm sht ndrtuar pr t zgjidhur nj problem t caktuar, dy pyetje kryesore lindin: 1. 2. E para sht nse algoritmi i zgjedhur gjithmon jep rezultat t saktat t problemit (Korrektsia) E dyta sht se si ky algoritem i menaxhon resurset e kompjuter (memoria, koha) (Efikasiteti)

Prgjigja pr pyetjen e par sht e thjesht, "po" ose "jo", edhe pse zakonisht nuk sht e leht pr t vrtetuar vlefshmrin e ksaj prgjigjen. Pyetjes se dyt mund ti pergjigjemi duke analizuar kompleksitetin n koh dhe n nevoj pr memorie

Algoritmet dhe strukturat e t dhnave

Analiza e algoritmeve
Atributet e algoritmeve jan
Korrektsia
Algoritmi duhet t jap rezultat t sakt pr t gjitha rastet e mundshme
Mund t prcaktohet n mnyr 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 dhnave

Analiza e algoritmeve
Shembull: Rradhitja (Sorting) Hyrja
Sekuence e numrave

Dalja
Permutacioni i sekuences se numrave

a1, a2, a3,.,an

Sort
2 5 4 10 7

b1,b2,b3,.,bn
2 4 5 7 10

Korrektsia Pr 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 (pjesrisht) tr renditura? algoritmi

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
T marrim q funksionet e kohes se dy algoritmeve A dhe B jan gjetur! Pr madhsi hyrse N Koha e Algoritmi A = TA (N) = 1.000 N Koha e Algoritmi B = TB (N) = N^2
kohzgjatja = f(madhsia e t dhnave hyrse) Cili sht m i shpejt?

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
Nse njsia pr matjen e kohs se algoritmeve a dhe b sht sec

Pra, cila algoritmi sht m e shpejt?

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor

Krahaso rritjen e tyre relative?

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
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 nN

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

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
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

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
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 numr t plot N> = 1 tilla q 7n-2 <= c*n pr do n>=N.
Ne kemi zgjedhur c = 7, N = 1 dhe pastaj kemi

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


Kshtu 7N-2 sht O (n)

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
1,00E+10 1,00E+09 1,00E+08 1,00E+07 1,00E+06 1,00E+05 1,00E+04 1,00E+03 1,00E+02 1,00E+01 1,00E+00 1,00E-01 2 4 8 16 32 64 128 256 512 1024

T(n)

n log n sqrt n n log n 100n n^2 n^3

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor

Algoritmet dhe strukturat e t dhnave

Algoritmet dhe strukturat e t dhnave


Shembull 1 : Funksioni pr t llogaritur shumn 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 analizn e kodit: Vendosim se cilat jan operacionet themelore q ne do t i numrojn : Assignment Increment Loop initialization Comparison Arithmetic operations Return statement

Analiza: Line 1: Skip for now Line 2: 1 operation Line 3: 1 operation (initialization) + (n + 1) operations (test) + n operations (increment) = 2n + 2 operations Line 4: 3 arithmetic operations (1 addition + 2 multiplications) executed n times = 3n operations Line 5: 1 operation Numri i prgjithshm i operacioneve = 1 + (2n + 2) 3n + 1 = 5n + 4 operacione

Algoritmet dhe strukturat e t dhnave


Analiza e kodit: Supozojm se ne jemi duke numruar veprimet njjtn baz si n shembullin 1 Kodi: (1) for (int i = 0; i < numLoops; i++) (2) for (int j = 0; j < numLoops; j++) (3) sum += 2; // end nested loop example 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 prgjithshm i operacioneve pr inner loop= (2n + 2) + 1n = 3n + 2 operacione (linja 2 & 3) Kshtu, 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 operations Body of outer loop: Total number of operations for inner loop executed n times = (3n + 2) * n = 3n^2 + 2n operations Numri i prgjithshm i operacioneve = 2n + 2 (alineja 1) + 3n ^ 2 + 2n (trupi i lak e jashtme) = 3n ^ 2 + 4n + 2 Kshtu, koha e nested loops sht O (n ^ 2). Koha e tij sht kuadratik (sepse sht ngritur n fuqin 2), kshtu q sht prshkruar si nj Algoritmi kuadratike.

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor

Algoritmet dhe strukturat e t dhnave

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

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor
Zgjidhja

Algoritmet dhe strukturat e t dhnave

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

Algoritmet dhe strukturat e t dhnave

Kompleksiteti kohor

Algoritmet dhe strukturat e t dhnave

Tipet e t dhnave
Tipet Statike
Tipet e thjeshta Integer Char Boolean Pointer/refernce Tipet e strukturume Array String

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

Algoritmet dhe strukturat e t dhnave

Tipet e t strukturave te te dhnave


Array
Linked List

Tree

Queue

Stack

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

Algoritmet dhe strukturat e t dhnave

Vektort/Arrays - n JAVA
Vektoret / Arrays fare tipi i te dhenave (zakonisht) Statik Strukturum Ne java Array eshte objekt. Krijimi i nje array n Java
int[] intArray; // referenc n array intArray = new int[100]; // rezervimi i memorjes pr 100 elemente Sintakse alternative int intArray[]= new int[100]; int intArray[] ={1,4,5,8,2,4,6,5}; int arrayLength = intArray.length

Algoritmet dhe strukturat e t dhnave

Vektort/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 dhnave

Vektort/Arrays - n JAVA

Algoritmet dhe strukturat e t dhnave

Vektort/Arrays - n JAVA

Algoritmet dhe strukturat e t dhnave

Vektort/Arrays - n JAVA

Algoritmet dhe strukturat e t dhnave

Vektort/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 dhnave

Vektort/Arrays - n JAVA

Algoritmet dhe strukturat e t dhnave

Vektort/Arrays - n JAVA
Disavantazhet: 1. Nse nj antare shtohet ose fshihet nga array, antaret e array duhet te zhevndosen 2. N rastin m t keq, pr shtimin ose fshirjen e nj antari n array merr koh n O(n) 3. Array kan gjatsi fikse etj.

Algoritmet dhe strukturat e t dhnave

Listat Lineare
ka mundet me qen nj list lineare sipas mendimit tuaj? Strukture lineare e t dhnave n formn (e1,e2,,en). e1: elementi i par i lists en: elementi i i n i lists n: gjatsia e lists Shembull: Lista e studentve n baze t emrit.

Algoritmet dhe strukturat e t dhnave

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 tjera isEmpty isFull

Algoritmet dhe strukturat e t dhnave

Listat Lineare

Algoritmet dhe strukturat e t dhnave

Listat Lineare

Algoritmet dhe strukturat e t dhnave

Listat Lineare - ushtrim

Algoritmet dhe strukturat e t dhnave

Listat Lineare - ushtrim


Rezultati:

Y L K U U

Vous aimerez peut-être aussi