Presentation laddar. Vänta.

Presentation laddar. Vänta.

För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,

Liknande presentationer


En presentation över ämnet: "För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,"— Presentationens avskrift:

1 För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd, Binärt träd -Filkomprimering med Huffmanträd Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd, Binärt träd -Filkomprimering med Huffmanträd

2 För utveckling av verksamhet, produkter och livskvalitet. Rekursion ?  En rekursiv metod är en metod som anropar sig själv.  Liknar loopar / iterationer  Mycket kraftfull men något förvirrande...  Rekursion är ett sätt att lösa ett problem genom att dela problemmet i flera identiska men mindre subproblem, dvs. metoden anropar sig själv med ” ett mindre argument”. 1*2*3*4*………(n-1) * n fakultet( n) fakultet( n -1)* n

3 För utveckling av verksamhet, produkter och livskvalitet. Implementation public static int fak(int n) { if(n==0) return 1; else return fak (n-1) * n; } !! basfall Se till att den rekursiva anropet alltid leder till basfallet

4 För utveckling av verksamhet, produkter och livskvalitet. Det största gemensamma divisorn (greatest common divisor) tillämpas i krypteringsalgoritmer public static long gcd (long a, long b) { if(b==0) return a; else if(a>=b) return gcd(a-b,b); else return gcd(b,a); }

5 För utveckling av verksamhet, produkter och livskvalitet. Vad är ett träd datastruktur? En abstaktion som beskriver.....just det...

6 För utveckling av verksamhet, produkter och livskvalitet. Datoranpassad träd...

7 För utveckling av verksamhet, produkter och livskvalitet. Var finns träd? Fil / Katalog strukturer! Sökning och sortering Filkomprimenring, Kryptering Kompilatorer

8 För utveckling av verksamhet, produkter och livskvalitet. Några begrepp Rot Löv Djup Höjd Storlek A DCB K JI HGF E 0 1111 22222 3 3 1012 00001 0 11 3124 11112 1

9 För utveckling av verksamhet, produkter och livskvalitet. Binära träd Maximalt två barn / nod Vänster / höger barn a b def c

10 För utveckling av verksamhet, produkter och livskvalitet. Implementation- noden class BinaryNode{ private Object element; private BinaryNode left; private BinaryNode right; public BinaryNode( Object theElement, BinaryNode lt, BinaryNode rt){ element=theElement; left=lt; right=rt; } public BinaryNode(){ this( null,null,null); } } element left right

11 För utveckling av verksamhet, produkter och livskvalitet. Implementation - metoder -public Object getElement() -public BinaryNode getLeft() -public void printPreorder() -public void printPostOrder() -public void printInOrder(); -public static int size(BinaryNode n) -public static int height( BinaryNode n) -...............................................................

12 För utveckling av verksamhet, produkter och livskvalitet. Metoden –size() public static int size(BinaryNode n) { if (n==null) return 0; else return 1+ size(n.left)+size(n.right); }

13 För utveckling av verksamhet, produkter och livskvalitet. Metoden printPreorder() public void printPreorder(){ System.out.println(element); if(left!=null) left.printPreorder(); if(rigth!=null) right.printPreorder(); } a cb fe abe f c

14 För utveckling av verksamhet, produkter och livskvalitet. Metoden printPostOrder() public void printPostOrder(){ if(left!=null) left.printPostOrder(); if(rigth!=null) right.printPostOrder(); System.out.println(element); } a cb fe efb c a

15 För utveckling av verksamhet, produkter och livskvalitet. BinaryTree klassen class BinaryTree{ } private BinaryNod root; public BinaryTree( Object item){ root = new BinaryNode(item,null,null); } public BinaryTree(){ root = null; }

16 För utveckling av verksamhet, produkter och livskvalitet. BinaryTree-metoden merge() public void merge( Object item, BinaryTree t1, BinaryTree t2) { // Testa om inte t1 och t2 är samma träd if( t1.root== t2.root && t1.root!=null) // rapportera fel root = new BinaryNode( item, t1.root,t2.root); if(this!=t1) t1.root=null; if(this!=t2) t2.root=null; }

17 För utveckling av verksamhet, produkter och livskvalitet. Datakomprimering - Huffman Hej, mitt namn är Nicolina och jag försöker få mina studenter att se tjusningen i träd och komprimeringsalgoritmer! 01001000 01100101 01101010 00101100 00100000 01101101 01101001 01110100 01110100 00100000 01101110 01100001 01101101 01101111 00100000 10000100...

18 För utveckling av verksamhet, produkter och livskvalitet. 01001000 01100101 01101010 00101100 00100000 01101101 01101001 01110100 01110100 00100000 01101110 01100001 01101101 01101111 00100000 10000100... Datakomprimering - Huffman 101 1110 010 01 111 011 01 11 100 1101 101 10 011 001 1100 10... 101 1110 010 01111 01101 11100 1101101 10011001110010...

19 För utveckling av verksamhet, produkter och livskvalitet. Datakomprimering – Huffman ( bokstäver för förekommer ofta hamnar högt upp i trädet och de som förekommer sällan hamnar längst ner i trädet) 01001101 01101101 00110101 10101001 01010111 25 ggr 31 ggr 5 ggr 19 ggr 14 ggr a b c d e ab ce d 10 11 10 000 001 01 a b c e d = = = = =


Ladda ner ppt "För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,"

Liknande presentationer


Google-annonser