Presentation is loading. Please wait.

Presentation is loading. Please wait.

CHAPTER 4 RECURSION. BASICALLY, A METHOD IS RECURSIVE IF IT INCLUDES A CALL TO ITSELF.

Similar presentations


Presentation on theme: "CHAPTER 4 RECURSION. BASICALLY, A METHOD IS RECURSIVE IF IT INCLUDES A CALL TO ITSELF."— Presentation transcript:

1 CHAPTER 4 RECURSION

2 BASICALLY, A METHOD IS RECURSIVE IF IT INCLUDES A CALL TO ITSELF.

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43 EXAMPLE 3: TOWERS OF HANOI

44

45

46

47

48

49

50

51

52

53 // Precondition: n > 0. Otherwise, IllegalArgumentException has // been thrown. // Postcondition: the steps needed to move n disks from pole orig // to pole dest have been written out. Pole temp is // used for temporary storage. The worstTime (n) is // O (2 n ). public void move (int n, char orig, char dest, char temp) { if (n <= 0) throw new IllegalArgumentException( ); if (n == 1) gui.println ("Move disk 1 from " + orig + " to " + dest); else { move (n ‑ 1, orig, temp, dest); gui.println ("Move disk " + n + " from " + orig + " to " + dest); move (n ‑ 1, temp, dest, orig) ; } // else } // method move

54

55

56

57 THE TOTAL NUMBER OF CALLS TO move IS: n-1 1 + 2 + 4 + … + 2 n-1 =  2 i i=0

58 n-1  2 i = 2 n - 1 i=0 SEE EXAMPLE 6 OF APPENDIX 1 FOR A PROOF BY MATHEMATICAL INDUCTION.

59 WE CONCLUDE THAT worstTime(n) is O(2 n ), AND, BECAUSE 2 n - 1 DISKS MUST BE MOVED, O(2 n ) IS THE SMALLEST UPPER BOUND OF worstTime(n).

60

61

62 EXAMPLE 4: BACKTRACKING

63 BACKTRACKING IS THE STRATEGY OF TRYING TO REACH A GOAL BY A SEQUENCE OF CHOSEN POSITIONS, WITH RE-TRACING IN REVERSE ORDER OF POSITIONS THAT CANNOT LEAD TO THE GOAL.

64 STRATEGY: TRY TO GO WEST; IF UNABLE TO GO WEST, TRY TO GO SOUTH; IF UNABLE TO GO SOUTH, BACKTRACK (UNTIL YOU CAN GO SOUTH). DO NOT GO TO ANY POSITION THAT HAS BEEN SHOWN NOT TO LEAD TO A GOAL. THE GOAL IS EITHER G1 OR G2. P3 P2 P1 P4 P5 G2 P7 P6 G1

65 WHEN A POSITION IS VISITED, IT IS MARKED AS (POTENTIALLY) BEING ON A PATH TO THE GOAL. IF WE DISCOVER OTHERWISE, THE MARKING MUST BE UNDONE, SO THAT POSITION WILL NEVER AGAIN BE VISITED. FOR EXAMPLE, P4 IS NOT VISITED FROM P5.

66 WE WILL SOLVE THIS MAZE-SEARCH PROBLEM WITHIN THE GENERAL FRAMEWORK OF BACKTRACKING, WHICH CAN EASILY BE UTILIZED IN OTHER APPLICATIONS.

67 THE Application INTERFACE AND THE Backtrack CLASS ARE GENERIC: THEY ARE THE SAME FOR ANY BACKTRACKING PROJECT.

68 import java.util.*; public interface Application { // Postcondition: true has been returned if pos could be on a // path to a goal position. Otherwise, false // has been returned. public boolean valid (Position pos); // Postcondition: the position specified by pos has been // marked as being on a path to a goal position. public void record (Position pos); // Postcondition: true has been returned if pos is a goal posi- // tion. Otherwise, false has been returned. public boolean done (Position pos);

69 // Postcondition: the position specified by pos has been // marked as not being on a path to a // goal position. public void undo (Position pos); // Postcondition: a string representation of this Application // has been returned. public String toString(); // Postcondition: an iterator over the positions directly // accessible from pos has been returned. public Iterator iterator (Position pos); } // interface Application

70

71

72

73

74

75

76

77

78

79 MAZE SEARCHING: 1 = CORRIDOR; 0 = WALL start 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 finish ITERATOR CHOICES: NORTH, EAST, SOUTH, WEST VALID = 1; MARKED = 9; DEAD END = 2

80

81 SOLUTION: 9 = PATH; 2 = DEAD END 9 9 9 0 2 2 0 0 0 2 2 2 2 1 0 9 9 9 0 2 2 2 2 2 0 2 1 0 0 0 9 0 2 0 2 0 2 0 2 1 0 0 0 9 2 2 0 2 0 2 2 2 1 1 1 1 9 0 0 0 0 1 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 9 9 9 9 9 9 9 9 9

82 ALL THAT NEED TO BE DEVELOPED ARE THE Position CLASS AND THE CLASS THAT IMPLEMENTS THE Application INTERFACE. FOR THIS APPLICATION, A POSITION IS SIMPLY A ROW AND COLUMN, SO:

83

84

85

86

87

88

89

90

91

92 EXERCISE: RECALL THE SOLUTION WHEN THE ORDER WAS NORTH, EAST, SOUTH, WEST: 9 9 9 0 2 2 0 0 0 2 2 2 2 1 0 9 9 9 0 2 2 2 2 2 0 2 1 0 0 0 9 0 2 0 2 0 2 0 2 1 0 0 0 9 2 2 0 2 0 2 2 2 1 1 1 1 9 0 0 0 0 1 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 9 9 9 9 9 9 9 9 9

93 RE-SOLVE WITH THE ORDER NORTH, EAST, WEST, SOUTH: start 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 finish HINT: ONLY ONE ‘1’ REMAINS.

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125


Download ppt "CHAPTER 4 RECURSION. BASICALLY, A METHOD IS RECURSIVE IF IT INCLUDES A CALL TO ITSELF."

Similar presentations


Ads by Google