Kedyk D. Implementing Useful Algorithms in C++ 2020 Rep Fix
- Type:
- Other > E-books
- Files:
- 2
- Size:
- 141.68 MiB (148567327 Bytes)
- Uploaded:
- 2024-08-25 12:36 GMT
- By:
- andryold1
- Seeders:
- 62
- Leechers:
- 10
- Info Hash: FEE8B0A61567C78B54BFBA9DA2A04AEBEA4F36A6
Textbook in PDF format This book explains bow to properly implement algorithms and data structures worth implementing (yes, many aren't!], mostly assuming familiarity with the basic ideas on the level of an introductory algorithms class. So it: Covers numerous specialized topics. For the standard ones gives substantial extra material needed for implementation and complete understanding. E.g., bow to implement a priority queue that allows keeping track ofitems for short est path algorithms? Makes unapologetic decisions about which algorithms and data structures to use. For some more advanced chapters this is perhaps the main takeaway for the reader.Though understanding reason ing behind the choices is still more important. In some cases the known algorithms weren't good enough,so 1 invented my own.These aren't published elsewhere.Some are: A garbage-collected free list(see the"Fundamental Algorithms" chapter) A sum heap(see the"Random Number Generation"chapter] A xorshift-based implementation ofa universal hash function for arrays(see the"Hashing" chapter] Use ofthe sign testfor decision and regression tree pruning(see the"Machine Learning—Classifica tion" chapter] An efficient k-medoid implementation(see the"Machine Learning—Clustering"chapter] Ideally for an algorithm every important design choice has been extensively researched and validated and is common knowledge.My inventions need validation by others, but there is likely scientific value in at leastsome ofthem.So if you are a researcher,feel free to email me with any questions. As building blocks for more complicated algorithms and data structures, 1 use those presented in the book and not the ones from the C++ STL. This allows better testing of the code and has certain usability advantages—e.g., 1 lost count of caught bugs due to checking bounds in operator of my own vector implementation, which also allows to work with the last element conveniently. Of course for real-world development,established libraries are preferred due to being standard and more robust. My codes,though reasonably tested,are only starters for good implementations. For simplicity many latest C++ features are avoided. E.g., move semantics mightimprove efficiency when objects have efficient destructors,but otherwise compiler optimization is enough.This is an advanced book though,so need some computational and mathematical maturity.The chapters on specialized topics such as numerical algorithms need specific math knowledge such as linear algebra. Some later chapters rely on some earlier ones. There are no exercises, but some chapters have projects for further extension. These usually need research and careful implementation and are mostly things 1 haven't gotten to. This book is best used in companion to those that teach the basic ideas, particularly for the later chap ters. I don't claim that my implementations are perfect,only a step in the right direction. 1 optimized the ref erences,and ifsome popular books on a topic are missing,this is likely because 1 am very selective. Overall, other books tend to give more examples and mathematics butfar fewer implementation details,and need to read several different expositions to get comfortable with the material. The preliminary versions of this book were titled "Commodity Algorithms and Data Structures in C++", updated every two years. 1 made substantial effort to fix all errors and to address all the feedback to create a "stable version".So no new edition is expected for the next several years,though I am still actively curious about many of the topics. Please e-mail any feedback to or post a review on Amazon—I am eager to hear about what you liked and what needs to be added or improved. Expect to learn some thing new in every chapter! All the code and some slides are available at https://github.com/dkedvk/ImDlementingUsefulAlgorithms