Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: Analysis of Algorithm using List,

Similar presentations


Presentation on theme: "CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: Analysis of Algorithm using List,"— Presentation transcript:

1 CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: Analysis of Algorithm using List, Stack and Queues Dr.Surasak Mungsing E-mail: Surasak.mu@spu.ac.th Sep-151

2 9/15/2015 2 Stacks CSE221/ICT221 Analysis and Design of Algorithms

3 9/15/2015 3 Stack Operation: Push CSE221/ICT221 Analysis and Design of Algorithms

4 9/15/2015 4 Stack Operation: Pop CSE221/ICT221 Analysis and Design of Algorithms

5 9/15/2015 5 Stack Operation: Top CSE221/ICT221 Analysis and Design of Algorithms

6 9/15/2015 6 CSE221/ICT221 Analysis and Design of Algorithms

7 9/15/2015 7Stacks  Stack operation is LIFO (Last-In, First-Out)  Basic operations of Stack - Adding an element to Stack (Push) - Removing an element from Stack (Pop) - Using an element of Stack (Top)  Creating a Stack - using an array to represent a stack - using a Linked list to represent a Stack CSE221/ICT221 Analysis and Design of Algorithms

8 9/15/2015 8 Stack represented by Linked list CSE221/ICT221 Analysis and Design of Algorithms

9 9/15/2015 9 Stack represented by Linked list CSE221/ICT221 Analysis and Design of Algorithms

10 9/15/2015 10 CSE221/ICT221 Analysis and Design of Algorithms

11 9/15/2015 11 Stack Operation: Push CSE221/ICT221 Analysis and Design of Algorithms

12 9/15/2015 12 Stack Operation: Destroy CSE221/ICT221 Analysis and Design of Algorithms

13 9/15/2015 13 Operations พื้นฐานของ Stack ที่สร้างด้วย Linked list 1. Create stack:allocate memory for stack head node 2. Push stack:add an element to a stack 3. Pop stack:remove an element from a stack 4. Stack top:using the value on the top of stack 5. Empty stack:check whether the stack is empty 6. Full stack: check whether the stack is full 7. Stack count:return number of elements in stack 8. Destroy stack: return all nodes of stack to system CSE221/ICT221 Analysis and Design of Algorithms

14 9/15/2015 14 Stack Applications: Balancing Symbols CSE221/ICT221 Analysis and Design of Algorithms

15 9/15/2015 15 Stack Applications: Infix to Postfix conversion The conversion time is O(n) CSE221/ICT221 Analysis and Design of Algorithms

16 9/15/2015 16 Postfix expression evaluation The evaluation time is O(n) CSE221/ICT221 Analysis and Design of Algorithms

17 Backtracking  backtracking is a general algorithm for finding all (or some) solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c ("backtracks") as soon as it determines that c cannot possibly be completed to a valid solution.  classic example of the use of backtracking is the eight queens puzzle, that asks for all arrangements of eight queens on a standard chessboard so that no queen attacks any other.  an important tool for solving constraint satisfaction problems, such as crosswords, verbal arithmetic, Sudoku, and many other puzzles. Sep-15 17 CSE221/ICT221 Analysis and Design of Algorithms

18 9/15/2015 18 Stack Applications: Backtracking CSE221/ICT221 Analysis and Design of Algorithms

19 9/15/2015 19 Stack Applications: Backtracking CSE221/ICT221 Analysis and Design of Algorithms

20 9/15/2015 20 Print path to goal Algorithm seekGoal (val map ) This algorithm determines the path to a desired goal. Prea graph containing the path Postpath printed 1 Stack=createStack 2 pMap= pMap 3 loop (pMap not null AND goalNotFound) 1 if (pMap is goal) 1 set goalNoFound to false 2 else 1 pushStack (stack,pMap) 2 if (pMapis a branch point) 1 loop (more branch point) 1 create branchPoint node 2 pushStack (stack, branchPoint) 3 advance to next node 4 if (emptyStack (stack)) 1 print (There is no path to your goal) 5 else 1 print (The path to your goal is: ) 2 loop (not emptyStack (stack)) 1 popStack (stack, pMap) 2 if (pMap notbranchPoint) 1 print (pMAp->nodeName) 3 print (End of File) 6 destroyStack (stack) end seekGoal Running time is O(|E|+|V|)

21 9/15/2015 21 Stack Applications: Backtracking CSE221/ICT221 Analysis and Design of Algorithms

22 9/15/2015 22 Stack Applications: Backtracking CSE221/ICT221 Analysis and Design of Algorithms

23 9/15/2015 23 Eight queens problem Algorithm queen8 (boardSize ) Position chess queens on a game board so that no queen can capture any other queen. Pre boardSize is number of rows & collumns on board Post Queen’ position pointed createStack (stack) Set row to 1 Set col to 0 loop (row <= boardSize) loop (col <= boardSize AND row <= boardSize) add 1 to col if (not garded (row, col)) place queen at board [row] [col] pushStack (stack, [row, col]) add 1 to row set col to 0 loop (col >= boardSize) popStack (stack, [row, col]) remove queen at board[row] [col] printBoard (stack) CSE221/ICT221 Analysis and Design of Algorithms

24 9/15/2015 24 /** * Print List from ListNode p onwards. */ Public static void printlist (ListNode p) { /* 1*/if (p== nul) /* 2*/ return; /* 3*/ system.out.println(p.element); /* 4*/ printList(p.next); } Tail Recursion: bad use of recursion If the list contains 20,000 elements to print, there will be a stack of 20,000 activation records representing the nested calls of line 4. Activation records are typically large, so the program is likely to run out of stack space. CSE221/ICT221 Analysis and Design of Algorithms

25 9/15/2015 25 Printing a list without recursion /** * Print List from ListNode p onward */ Public static void printList (ListNode p) { while (true) { if (p== null) return; system.out.println (p.element); p = p.next; { } Removal of tal recursion is so simple that some compilers do it automatically. CSE221/ICT221 Analysis and Design of Algorithms

26 9/15/2015 26 CSE221/ICT221 Analysis and Design of Algorithms

27 9/15/2015 27Queue  Queue uses FIFO (First-In, First-Out)  Basic operations of Queue - Enqueue : adding an element to Queue () - Dequeue: removing an element from Queue () - QueueFront : Returns a reference to the value at the front of a non-empty queue - QueueRear: Returns a reference to the value at the rear of a non-empty queue Implementing a Queue - by an Array - by Linked list CSE221/ICT221 Analysis and Design of Algorithms

28 9/15/2015 28 The Queue concept CSE221/ICT221 Analysis and Design of Algorithms

29 9/15/2015 29 Operation Enqueue CSE221/ICT221 Analysis and Design of Algorithms

30 9/15/2015 30 Operation Dequeue CSE221/ICT221 Analysis and Design of Algorithms

31 9/15/2015 31 Operation QueueFront CSE221/ICT221 Analysis and Design of Algorithms

32 9/15/2015 32 Operation QueueRear CSE221/ICT221 Analysis and Design of Algorithms

33 9/15/2015 33 Queue Operations CSE221/ICT221 Analysis and Design of Algorithms

34 9/15/2015 34 Queue implemented by Array CSE221/ICT221 Analysis and Design of Algorithms

35 9/15/2015 35 Is queue full? CSE221/ICT221 Analysis and Design of Algorithms

36 9/15/2015 36 Circular Queue CSE221/ICT221 Analysis and Design of Algorithms

37 9/15/2015 37 Queue implemented by linked list CSE221/ICT221 Analysis and Design of Algorithms

38 9/15/2015 38 Queue data structure CSE221/ICT221 Analysis and Design of Algorithms

39 9/15/2015 39 Operation algorithms on Queue 1. Create queue:create queue head based on dynamic memory 2. Enqueue:add an element on queue 3. Dequeue:remove an element from queue 4. Queue front:return an element at the front of queue 5. Queue rear: return an element at the rear of queue 6. Empty queue: returns true if queue is empty, else returns false 7. Full queue: returns true if queue is full, else returns false 8. Queue count: returns number of elements in queue 9. Destroy queue: returns memory allocated to queue to system CSE221/ICT221 Analysis and Design of Algorithms

40 9/15/2015 40 Create and enqueue CSE221/ICT221 Analysis and Design of Algorithms

41 9/15/2015 41 CSE221/ICT221 Analysis and Design of Algorithms

42 9/15/2015 42 CSE221/ICT221 Analysis and Design of Algorithms

43 9/15/2015 43 CSE221/ICT221 Analysis and Design of Algorithms

44 9/15/2015 44 Applications of Queue  Queue simulation  Categorizing Data CSE221/ICT221 Analysis and Design of Algorithms

45 15-Sep-15 45 CSE221/ICT221 Analysis and Design of Algorithms


Download ppt "CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: CSE 221/ICT221 Analysis and Design of Algorithms Lecture 06: Analysis of Algorithm using List,"

Similar presentations


Ads by Google