Algorithms and Programming - 1






















































Maybe you are interested!

Algorithms and Programming - 1


LE MINH HOANG





Special lecture


Hanoi Pedagogical University, 1999-2002


Thanks


I would like to express my gratitude to the teachers who taught me wholeheartedly during the difficult years when I first started learning computer science and programming. Their understanding and enthusiasm not only provided me with valuable knowledge but also set a good example for me to follow when I stood on the podium as a teacher.


This document is written based on documents collected from many different sources, by the efforts of many generations of teachers and students who have taught and studied at the Mathematics-Information Technology High School, Hanoi National University of Education, and I am just the one who compiled it. Through this, I would like to thank my colleagues who have read and contributed valuable comments, and thank the students - the people who directly created this book.


Due to time constraints, some topics have been available but have not been edited and included in the document. Readers can refer to the reference section for more information. We look forward to receiving your comments and suggestions to complete this book.


Tokyo, April 28, 2003


Le Minh Hoang

i


INDEX

PART 1. LISTING PROBLEM 1

§1. REVIEW OF SOME KNOWLEDGE OF COMBINATIONAL ALGEBRA 2

1.1. IPEDIATED RECONCILIATION 2

1.2. NON-ITCHED CONFORMITY 2

1.3. PERMISSION 2

1.4. COMPOSITION 3

§2. GENERATION METHOD 4

2.1. GENERATE BINARY SEQUENCES OF LENGTH N 5

2.2. LISTING K-ELEMENT SUBSTITUTES 6

2.3. LIST THE PERMISSIONS 8

§3. BACKWARDING ALGORITHM 12

3.1. LIST BINARY SEQUENCES OF LENGTH N 12

3.2. LISTING K-ELEMENT SUBSTITUTES 13

3.3. LIST OF NON-REPEATING COMBINATIONS K 15

3.4. ANALYSIS PROBLEM 16

3.5. 18-PAIR PROBLEM

§4. 24-BRANCH TECHNIQUE

4.1. OPTIMISATION PROBLEM 24

4.2. THE COMBINATION EXPLOSION 24

4.3. TECHNICAL MODEL OF NEAR BRANCH 24

4.4. TOURIST PROBLEM 25

4.5. ABC SERIES 28

PART 2. DATA STRUCTURES AND ALGORITHMS 33

§1. BASIC STEPS WHEN SOLVING COMPUTER TECHNOLOGY PROBLEMS 34

1.1. DETERMINING PROBLEM 34

1.2. FIND THE DATA STRUCTURE TO REPRESENT PROBLEM 34

1.3. FIND ALGORITHM 35

1.4. PROGRAMMING 37

1.5. TESTING 37

1.6. PROGRAM OPTIMIZATION 38

§2. ANALYSIS OF ALGORITHM EXECUTION TIME 40

2.1. COMPUTATIONAL COMPLEXITY OF THE ALGORITHM 40

2.2. DETERMINING THE COMPUTATIONAL COMPLEXITY OF THE ALGORITHM 40

2.3. COMPUTATIONAL COMPLEXITY WITH INPUT DATA STATUS 43

2.4. COST OF IMPLEMENTING ALGORITHM 43

§3. RECURRENCE AND RECURRENT ALGORITHM 45

3.1. CONCEPT OF RECURRENCE 45

3.2. RECURRENT ALGORITHM 45

3.3. EXAMPLE OF RECURRENT ALGORITHM 46

3.4. EFFECT OF RECURRENCE 50

§4. DATA STRUCTURE REPRESENTING LIST 52

4.1. CONCEPT OF LIST 52

4.2. REPRESENTING LISTS IN COMPUTERS 52

§5. STACKS AND QUEUES 58

5.1. STACK 58

5.2. QUEUE 60

§6. TREE 64

6.1. DEFINITIONS 64

6.2. BINARY TREE 65

6.3. BINARY TREE REPRESENTATION 67

6.4. BINARY TREE TRANSFORMATION 69

6.5. K_PHAN 70

6.6. GENERAL TREE 71

§7. PREFIX, INTEGRATED AND SUBFIX NOTATION 74

7.1. EXPRESSION IN THE FORM OF BINARY TREES 74

7.2. NOTATIONS FOR THE SAME EXPRESSION 74

7.3. HOW TO CALCULATE THE VALUE OF EXPRESSION 75

7.4. CONVERTING FROM INTEGRATED TO SUFFIX 78

7.5. BUILDING A BINARY TREE TO REPRESENT THE EXPRESSION 80

§8. SORTING 82

8.1. SORTING PROBLEM 82

8.2. SELECTIONSORT ALGORITHM 84

8.3. BUBBLESORT ALGORITHM 85

8.4. INSERT SORT ALGORITHM 85

8.5. SHELLSORT 87

8.6. QUICKSORT SORTING ALGORITHM 88

8.7. HEAPSORT ALGORITHM 92

8.8. SORTING BY DISTRIBUTION COUNTING 95

8.9. STABILITY OF SORTING ALGORITHM 96

8.10. RADIXSORT ALGORITHM 97

8.11. MERGESORT ALGORITHM 102

8.12. SETTINGS 105

8.13. REVIEW, COMMENT. 112

§9. SEARCHING 116

9.1. SEARCH PROBLEM 116

9.2. SEQUENTIAL SEARCH 116

9.3. BINARY SEARCH 116

9.4. BINARY SEARCH TREE (BST) 117

9.5. HASH 122

9.6. NUMBER KEY WITH SEARCH PROBLEM 122

9.7. DIGITAL SEARCH TREE (DST) 123

9.8. RADIX SEARCH TREE (RST) 126

9.9. FINAL REMARKS 131

PART 3. PLANNING ACTIVITIES 133

§1. RETRIEVAL FORMULA 134

1.1. EXAMPLE 134

1.2. FIRST IMPROVEMENT 135

1.3. SECOND IMPROVEMENT 137

1.4. RECURRENT INSTALLATION 137

§2. METHODS OF OPERATION PLANNING 139

2.1. PLANNING PROBLEM 139

2.2. ACTIVITY PLANNING METHOD 139

§3. SOME DYNAMIC PLANNING PROBLEMS 143

3.1. LONGEST INCREASING MONOTONE SUBSEQUENCE 143

3.2. THE BAG PROBLEM 148

3.3. STRING TRANSFORMATION 150

3.4. SUB-SEQUENCES WHOSE SUM IS DIVIDABLE BY K 154

3.5. COMBINATIONAL MULTIPLICATION OF MATRIX SERIES 159

3.6. PRACTICE EXERCISES 163

PART 4. ALGORITHM ON GRAPHS 169

§1. BASIC CONCEPTS 170

1.1. DEFINITION OF GRAPH 170

1.2. CONCEPTS 171

§2. GRAPHIC PRESENTATION ON COMPUTER 173

2.1. ADJACENT MATRIX (ADJECTIVE MATRIX) 173

2.2. LIST OF EDGES 174

2.3. LIST OF ADJACENTS 175

2.4. COMMENTS 176

§3. GRAPH SEARCH ALGORITHMS 177

3.1. PROBLEM 177

3.2. DEPTH FIRST SEARCH ALGORITHM 178

3.3. BREADTH FIRST SEARCH ALGORITHM 184

3.4. COMPUTATIONAL COMPLEXITY OF BFS AND DFS 189

§4. CONNECTIVITY OF GRAPH 190

4.1. DEFINITIONS 190

4.2. CONNECTEDNESS IN UNDIRECTED GRAPHS 191

4.3. FULL GRAPH AND WARSHALL ALGORITHM 191

4.4. STRONGLY INTERCONNECTED COMPONENTS 195

§5. SOME APPLICATIONS OF GRAPH SEARCH ALGORITHMS 205

5.1. BUILDING A SPANNING TREE OF GRAPH 205

5.2. SET OF BASIC CYCLES OF GRAPH 208

5.3. GRAPH DIRECTION AND DEMAND LISTING PROBLEM 208

5.4. MATCH LIST 214

§6. EULER CYCLES, EULER PATHS, EULER GRAPHS 218

6.1. PROBLEM 7 BRIDGES 218

6.2. DEFINITIONS 218

6.3. THEOREM 218

6.4. FLEURY'S ALGORITHM FOR FINDING EULER CYCLES 219

6.5. SETTINGS 220

6.6. BETTER ALGORITHM 222

§7. HAMILTON CYCLE, HAMILTON PATH, HAMILTON GRAPHS 225

7.1. DEFINITIONS 225

7.2. THEOREM 225

7.3. SETTINGS 226

§8. SHORTEST PATH PROBLEM 230

8.1. WEIGHTED GRAPH 230

8.2. SHORTEST PATH PROBLEM 230

8.3. CASE OF GRAPHS WITHOUT NEGATIVE CYCLES - FORD BELLMAN'S ALGORITHM 232

8.4. CASE OF NON-NEGATIVE WEIGHTS ON ARCS - DIJKSTRA'S ALGORITHM 234

8.5. DIJKSTRA'S ALGORITHM AND HEAP STRUCTURE 237

8.6. CASE OF GRAPH WITHOUT CYCLES - TOPOLOGICAL ORDER 240

8.7. SHORTEST PATH BETWEEN ANY PAIR OF PERCEPTS - FLOYD'S ALGORITHM. 242

8.8. COMMENTS 245

§9. MINIMUM SPANNING TREE PROBLEM 247

9.1. MINIMUM SPANNING TREE PROBLEM 247

9.2. KRUSKAL'S ALGORITHM (JOSEPH KRUSKAL - 1956) 247

9.3. PRIM'S ALGORITHM (ROBERT PRIM - 1957) 252

§10. MAXIMUM FLOW PROBLEM ON NETWORK 256

10.1. PROBLEM 256

10.2. CUTTING, FLOW INCREASE, FORD - FULKERSON THEOREM 256

10.3. SETTINGS 258

10.4. FORD - FULKERSON ALGORITHM (LRFORD & DRFULKERSON - 1962) 262

§11. PROBLEM OF FINDING MAXIMUM MATCHING SET ON A BI-SIDED GRAPH 266

11.1. BIPARTITE GRAPH 266

11.2. UNWEIGHTED PAIRING PROBLEMS AND CONCEPTS 266

11.3. OPEN PATH ALGORITHM 267

11.4. SETTINGS 268

§12. PROBLEM OF FINDING MAXIMUM SET WITH MINIMUM WEIGHT ON A BI-SIDED GRAPH - HUNGARIAN ALGORITHM 273

12.1. ASSIGNMENT PROBLEM 273

12.2. ANALYSIS 273

12.3. ALGORITHM 274

12.4. SETTINGS 278

12.5. PROBLEM OF FINDING MAXIMUM MATCHING SET WITH MAXIMUM WEIGHT ON A BI-SIDED GRAPHS 284

12.6. UPGRADE 284

§13. PROBLEM OF FINDING MAXIMUM COMPONENTS ON GRAPH 290

13.1. CONCEPTS 290

13.2. EDMONDS ALGORITHM (1965) 291

13.3. LAWLER METHOD (1973) 293

13.4. SETTINGS 295

13.5. COMPUTATIONAL COMPLEXITY 299

FURTHER READING 301


PICTURE


Figure 1: Backtracking search tree in binary sequence enumeration problem 13

Figure 2: Arrange 8 queens on an 8x8 chessboard 19

Figure 3: The diagonal NE-SW has index 10 and the diagonal NE-SW has index 0 19

Figure 4: Algorithm flowchart 36

Figure 5: Hanoi Tower 49

Figure 6: Node structure of a singly linked list 53

Figure 7: Singly linked list 53

Figure 8: Node structure of doubly linked list 55

Figure 9: Doubly linked list 55

Figure 10: One-way circular join list 55

Figure 11: Bidirectional circular join list 56

Figure 12: Using a circular list to describe Queue 61

Figure 13: Moving the train car. 63

Figure 14: Moving the train (2) 63

Figure 15: Tree 64

Figure 16: Levels of nodes on the tree 65

Figure 17: Expression tree 65

Figure 18: Degenerate binary tree types 66

Figure 19: Complete binary tree and full binary tree 66

Figure 20: Numbering the nodes of a complete binary tree for representation by an array of 67

Figure 21: Disadvantages of the tree representation method using arrays 68

Figure 22: Node structure of binary tree 68

Figure 23: Tree representation using 69-link structure

Figure 24: Numbering the nodes of a 3_part tree to represent it with an array of 71

Figure 25: Representing a general tree using an array of 72

Figure 26: Node structure of the general tree 73

Figure 27: Expression in the form of a binary tree 74

Figure 28: Inner loop of QuickSort 89

Figure 29: State before recursive call 90

Figure 30: Heap 92

Figure 31: Pile up 93

Figure 32: Invert the value of k 1 for k n and consider the remainder 93

Figure 33: Stack the remaining parts and then invert k 1 to k n-194

Figure 34: Numbering the 97 bits

Figure 35: Merge sort algorithm 102

Figure 36: Setting up sorting algorithms with large data 114

Figure 37: Binary search tree 118

Figure 38: Deleting a leaf node in the tree BST 119

Figure 39. Delete a node with only one child branch on a BST 120 tree

Comment


Agree Privacy Policy *