Classic computer science problems in Java


David Kopec.
Bok Engelsk 2020 · Electronic books.
Omfang
XVIII, 244 pages : illustrations
Opplysninger
Includes index.. - Intro -- Classic Computer Science Problems in Java -- Copyright -- contents -- front matter -- acknowledgments -- about this book -- liveBook discussion forum -- about the author -- about the cover illustration -- Introduction -- Who should read this book -- How this book is organized: A roadmap -- About the code -- Other online resources -- 1 Small problems -- 1.1 The Fibonacci sequence -- 1.1.1 A first recursive attempt -- 1.1.2 Utilizing base cases -- 1.1.3 Memoization to the rescue -- 1.1.4 Keep it simple, Fibonacci -- 1.1.5 Generating Fibonacci numbers with a stream -- 1.2 Trivial compression -- 1.3 Unbreakable encryption -- 1.3.1 Getting the data in order -- 1.3.2 Encrypting and decrypting -- 1.4 Calculating pi -- 1.5 The Towers of Hanoi -- 1.5.1 Modeling the towers -- 1.5.2 Solving The Towers of Hanoi -- 1.6 Real-world applications -- 1.7 Exercises -- 2 Search problems -- 2.1 DNA search -- 2.1.1 Storing DNA -- 2.1.2 Linear search -- 2.1.3 Binary search -- 2.1.4 A generic example -- 2.2 Maze solving -- 2.2.1 Generating a random maze -- 2.2.2 Miscellaneous maze minutiae -- 2.2.3 Depth-first search -- 2.2.4 Breadth-first search -- 2.2.5 A* search -- 2.3 Missionaries and cannibals -- 2.3.1 Representing the problem -- 2.3.2 Solving -- 2.4 Real-world applications -- 2.5 Exercises -- 3 Constraint-satisfaction problems -- 3.1 Building a constraint-satisfaction problem framework -- 3.2 The Australian map-coloring problem -- 3.3 The eight queens problem -- 3.4 Word search -- 3.5 SEND+MORE=MONEY -- 3.6 Circuit board layout -- 3.7 Real-world applications -- 3.8 Exercises -- 4 Graph problems -- 4.1 A map as a graph -- 4.2 Building a graph framework -- 4.2.1 Working with Edge and UnweightedGraph -- 4.3 Finding the shortest path -- 4.3.1 Revisiting breadth-first search (BFS) -- 4.4 Minimizing the cost of building the network -- 4.4.1 Working with weights.. - 4.4.2 Finding the minimum spanning tree -- 4.5 Finding shortest paths in a weighted graph -- 4.5.1 Dijkstra's algorithm -- 4.6 Real-world applications -- 4.7 Exercises -- 5 Genetic algorithms -- 5.1 Biological background -- 5.2 A generic genetic algorithm -- 5.3 A naive test -- 5.4 SEND+MORE=MONEY revisited -- 5.5 Optimizing list compression -- 5.6 Challenges for genetic algorithms -- 5.7 Real-world applications -- 5.8 Exercises -- 6 K-means clustering -- 6.1 Preliminaries -- 6.2 The k-means clustering algorithm -- 6.3 Clustering governors by age and longitude -- 6.4 Clustering Michael Jackson albums by length -- 6.5 K-means clustering problems and extensions -- 6.6 Real-world applications -- 6.7 Exercises -- 7 Fairly simple neural networks -- 7.1 Biological basis? -- 7.2 Artificial neural networks -- 7.2.1 Neurons -- 7.2.2 Layers -- 7.2.3 Backpropagation -- 7.2.4 The big picture -- 7.3 Preliminaries -- 7.3.1 Dot product -- 7.3.2 The activation function -- 7.4 Building the network -- 7.4.1 Implementing neurons -- 7.4.2 Implementing layers -- 7.4.3 Implementing the network -- 7.5 Classification problems -- 7.5.1 Normalizing data -- 7.5.2 The classic iris data set -- 7.5.3 Classifying wine -- 7.6 Speeding up neural networks -- 7.7 Neural network problems and extensions -- 7.8 Real-world applications -- 7.9 Exercises -- 8 Adversarial search -- 8.1 Basic board game components -- 8.2 Tic-tac-toe -- 8.2.1 Managing tic-tac-toe state -- 8.2.2 Minimax -- 8.2.3 Testing minimax with tic-tac-toe -- 8.2.4 Developing a tic-tac-toe AI -- 8.3 Connect Four -- 8.3.1 Connect Four game machinery -- 8.3.2 A Connect Four AI -- 8.3.3 Improving minimax with alpha-beta pruning -- 8.4 Minimax improvements beyond alpha-beta pruning -- 8.5 Real-world applications -- 8.6 Exercises -- 9 Miscellaneous problems -- 9.1 The knapsack problem -- 9.2 The Traveling Salesman Problem.. - 9.2.1 The naive approach -- 9.2.2 Taking it to the next level -- 9.3 Phone number mnemonics -- 9.4 Real-world applications -- 9.5 Exercises -- 10 Interview with Brian Goetz -- Appendix A. Glossary -- Appendix B. More resources -- Java -- Data structures and algorithms -- Artificial intelligence -- Functional programming -- index.
Emner
Sjanger
Dewey
ISBN
1-63835-654-8

Bibliotek som har denne