Data Structures & Algorithms in Python, 1st edition
BRAND: PEARSON
eBook edition. Monthly Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
Tổng quan sách
TÌM HIỂU CÁCH SỬ DỤNG CẤU TRÚC DỮ LIỆU KHI VIẾT CHƯƠNG TRÌNH VÀ Thuật toán PYTHON HIỆU SUẤT CAOPhần giới thiệu thực tế về cấu trúc dữ liệu và thuật toán này có thể giúp mọi lập trình viên muốn viết phần mềm hiệu quả hơn. Dựa trên hướng dẫn dựa trên Java huyền thoại của Robert Lafore, cuốn sách này giúp sinh viên hiểu chính xác cách thức hoạt động của các cấu trúc dữ liệu và thuật toán. Bạn sẽ tìm hiểu cách áp dụng chúng một cách hiệu quả bằng ngôn ngữ Python cực kỳ phổ biến và mở rộng quy mô mã của bạn để xử lý các thách thức về dữ liệu lớn ngày nay.Xuyên suốt, các tác giả tập trung vào các ví dụ thực tế, truyền đạt các ý tưởng chính bằng hình ảnh trực quan, tương tác, đồng thời giới hạn độ phức tạp và toán học ở những gì bạn cần để cải thiện hiệu suất. Từng bước, họ giới thiệu mảng, sắp xếp, ngăn xếp, hàng đợi, danh sách liên kết, đệ quy, cây nhị phân, cây 2-3-4, bảng băm, cấu trúc dữ liệu không gian, đồ thị, v.v. Các ví dụ về mã và hình minh họa của chúng rất rõ ràng, bạn có thể hiểu chúng ngay cả khi bạn là người mới bắt đầu hoặc bạn đã có kinh nghiệm với các ngôn ngữ hướng đối tượng hoặc thủ tục khác.Xây dựng các kỹ năng khoa học máy tính cốt lõi giúp bạn vượt ra ngoài phạm vi “viết mã” đơn thuầnTìm hiểu cách cấu trúc dữ liệu làm cho chương trình (và lập trình viên) hiệu quả hơnXem cách tổ chức dữ liệu và thuật toán ảnh hưởng đến mức độ bạn có thể làm với tài nguyên máy tính của ngày hôm nay và ngày maiPhát triển kỹ năng triển khai cấu trúc dữ liệu mà bạn có thể sử dụng bằng bất kỳ ngôn ngữ nàoChọn (các) cấu trúc dữ liệu và thuật toán tốt nhất cho từng vấn đề lập trình—và nhận ra những vấn đề nào cần tránhCấu trúc dữ liệu & thuật toán trong Python chứa đầy các ví dụ, câu hỏi ôn tập, bài tập cá nhân và nhóm, thử nghiệm suy nghĩ và các dự án lập trình dài hơn. Đây là cuốn sách lý tưởng cho cả môi trường tự học và lớp học, đồng thời có thể dùng làm văn bản chính hoặc phần bổ sung cho bài thuyết trình trang trọng hơn.Tài nguyên dành cho Giảng viên: Các slide bài giảng và giải pháp dự án cho một số chương đầu tiên có sẵn trên Trung tâm Nguồn lực dành cho Giảng viên của Pearson. Đối với các câu hỏi và thông tin phụ trợ bổ sung, chẳng hạn như các slide bài giảng hoàn chỉnh và các giải pháp dự án lập trình, vui lòng liên hệ với các tác giả tại trang web của họ, https://datastructures.live.
1 Overview . . . 1What Are Data Structures and Algorithms?. . . . . . . . . . . . . . . . . . . . . . . 1Overview of Data Structures.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Overview of Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Some Definitions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Programming in Python.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Object-Oriented Programming.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Arrays . . . 29The Array Visualization Tool.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Using Python Lists to Implement the Array Class.. . . . . . . . . . . . . . . . . 37The OrderedArray Visualization Tool.. . . . . . . . . . . . . . . . . . . . . . . . . . 47Binary Search.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Python Code for an OrderedArray Class.. . . . . . . . . . . . . . . . . . . . . . . . 52Logarithms.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Storing Objects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Big O Notation.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Why Not Use Arrays for Everything?.. . . . . . . . . . . . . . . . . . . . . . . . . . 69Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 Simple Sorting . . . 75How Would You Do It?.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Bubble Sort. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Selection Sort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Insertion Sort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Comparing the Simple Sorts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014 Stacks and Queues . . . 103Different Structures for Different Use Cases.. . . . . . . . . . . . . . . . . . . . . 103Stacks.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Queues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Priority Queues.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Parsing Arithmetic Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1555 Linked Lists . . . 157Links.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158The LinkedList Visualization Tool.. . . . . . . . . . . . . . . . . . . . . . . . . . . . 164A Simple Linked List.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Double-Ended Lists.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Linked List Efficiency.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Abstract Data Types and Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Ordered Lists.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Doubly Linked Lists.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Insertion and Deletion at the Ends.. . . . . . . . . . . . . . . . . . . . . . . 201Insertion and Deletion in the Middle.. . . . . . . . . . . . . . . . . . . . . 204Doubly Linked List as Basis for Deques.. . . . . . . . . . . . . . . . . . . . 208Circular Lists.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Iterators.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2276 Recursion . . . 229Triangular Numbers.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Factorials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Anagrams.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239A Recursive Binary Search.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242The Tower of Hanoi.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Sorting with mergesort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Eliminating Recursion.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267Some Interesting Recursive Applications.. . . . . . . . . . . . . . . . . . . . . . . 275Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2837 Advanced Sorting . . . 285Shellsort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Partitioning.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Quicksort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Radix Sort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Timsort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3328 Binary Trees . . . 335Why Use Binary Trees?.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Tree Terminology.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337An Analogy.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340How Do Binary Search Trees Work?.. . . . . . . . . . . . . . . . . . . . . . . . . . 341Finding a Node.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346Inserting a Node.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Traversing the Tree.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Finding Minimum and Maximum Key Values. . . . . . . . . . . . . . . . . . . 365Deleting a Node.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366The Efficiency of Binary Search Trees.. . . . . . . . . . . . . . . . . . . . . . . . . 375Trees Represented as Arrays.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Printing Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379Duplicate Keys.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381The BinarySearchTreeTester.py Program. . . . . . . . . . . . . . . . . . . . . . . . 382The Huffman Code.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3979 2-3-4 Trees and External Storage . . . 401Introduction to 2-3-4 Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401The Tree234 Visualization Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Python Code for a 2-3-4 Tree.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412Efficiency of 2-3-4 Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4302-3 Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432External Storage.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46010 AVL and Red-Black Trees 463 Our Approach to the Discussion.. . . 463Balanced and Unbalanced Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464AVL Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470The Efficiency of AVL Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486Red-Black Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487Using the Red-Black Tree Visualization Tool.. . . . . . . . . . . . . . . . . . . . 489Experimenting with the Visualization Tool.. . . . . . . . . . . . . . . . . . . . . 492Rotations in Red-Black Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497Inserting a New Node.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498Deletion.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508The Efficiency of Red-Black Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5092-3-4 Trees and Red-Black Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Red-Black Tree Implementation.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52111 Hash Tables 525 Introduction to Hashing.. . . . . . . . . . . . . . . . . 526Open Addressing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Separate Chaining.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Hash Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Hashing Efficiency.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581Hashing and External Storage.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59512 Spatial Data Structures 597 Spatial Data.. . . . . .. . . . . . . . . . . . 597Computing Distances Between Points.. . . . . . . . . . . . . . . . . . . . . . . . . 599Circles and Bounding Boxes.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601Searching Spatial Data.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611Lists of Points.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612Grids.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617Quadtrees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633Theoretical Performance and Optimizations.. . . . . . . . . . . . . . . . . . . . 656Practical Considerations.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656Further Extensions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66313 Heaps 665 Introduction to Heaps.. . . . . . . . . . . . . . . . . . . .. . . . . 666The Heap Visualization Tool.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674Python Code for Heaps.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677A Tree-Based Heap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684Heapsort.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686Order Statistics.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70314 Graphs 705 Introduction to Graphs.. . . . . . . . . . . . . . . . . . . . . . . 705Traversal and Search.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718Minimum Spanning Trees.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734Topological Sorting.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740Connectivity in Directed Graphs.. . . . . . . . . . . . . . . . . . . . . . . . . . . . 753Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76315 Weighted Graphs . . . 767Minimum Spanning Tree with Weighted Graphs.. . . . . . . . . . . . . . . . . 767The All-Pairs Shortest-Path Problem.. . . . . . . . . . . . . . . . . . . . . . . . . . 797Efficiency.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800Intractable Problems.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801Summary.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805Questions.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806Experiments.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808Programming Projects.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80916 What to Use and Why 813 Analyzing the Problem.. . . . . . . . . . . 814Foundational Data Structures.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818Special-Ordering Data Structures.. . . . . . . . . . . . . . . . . . . . . . . . . . . . 824Sorting.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826Specialty Data Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828External Storage.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829Onward. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831A Running the Visualizations . . . 833B Further Reading . . . 841C Answers to Questions . . . 8459780134855684, TOC, 8/3/2022
