The Algorithm Design Manual, 2/e (Hardcover)

Steven S Skiena

買這商品的人也買了...

商品描述

Most professional programmers that I’ve encountered are not well prepared to tackle algorithm design problems. This is a pity, because the techniques of algorithm design form one of the core practical technologies of computer science. Designing correct, efficient, and implementable algorithms for real-world problems requires access to two distinct bodies of knowledge: • Techniques – Good algorithm designers understand several fundamental algorithm design techniques, including data structures, dynamic programming, depth first search, backtracking, and heuristics. Perhaps the single most important design technique is modeling, the art of abstracting a messy real-world application into a clean problem suitable for algorithmic attack. • Resources – Good algorithm designers stand on the shoulders of giants. Rather than laboring from scratch to produce a new algorithm for every task, they can figure out what is known about a particular problem. Rather than re-implementing popular algorithms from scratch, they seek existing implementations to serve as a starting point. They are familiar with many classic algorithmic problems, which provide sufficient source material to model most any application. This book is intended as a manual on algorithm design, providing access to combinatorial algorithm technology for both students and computer professionals.

商品描述(中文翻譯)

大多數我遇到的專業程式設計師並不具備解決演算法設計問題的良好準備。這是一個可惜的事情,因為演算法設計技術是計算機科學中核心的實用技術之一。為現實世界的問題設計正確、高效且可實現的演算法需要兩個不同的知識體系:技巧和資源。

技巧 - 優秀的演算法設計師了解幾種基本的演算法設計技巧,包括資料結構、動態規劃、深度優先搜索、回溯和啟發式算法。也許最重要的設計技巧是建模,即將混亂的現實應用抽象成適合進行演算法攻擊的清晰問題。

資源 - 優秀的演算法設計師站在巨人的肩膀上。他們不必從頭開始為每個任務創建新的演算法,而是可以找出關於特定問題的已知資訊。他們不必從頭重新實現熱門演算法,而是尋找現有的實現作為起點。他們熟悉許多經典的演算法問題,這些問題提供了足夠的素材來建模幾乎任何應用。

本書旨在作為演算法設計的手冊,為學生和專業程式設計師提供組合演算法技術的資源。