มีสารานุกรมของอัลกอริทึมหรือไม่? [ปิด]


34

มีสารานุกรมของอัลกอริทึมคล้ายกับคู่มือคณิตศาสตร์หรือไม่? ดูเหมือนว่ามีประโยชน์ที่จะมีจำนวนมากในที่เดียว ฉันรู้ว่าศิลปะการเขียนโปรแกรมคอมพิวเตอร์ถือเป็นแหล่งข้อมูลที่ดี แต่ดูเหมือนว่าไม่มีสารานุกรมเท่าที่ให้คำแนะนำ

ผู้ดำเนินรายการหมายเหตุ

เรากำลังมองหาคำตอบยาว ๆ ที่ให้คำอธิบายและบริบท อย่าเพิ่งทำรายการหนังสือ: โปรดอธิบายว่าทำไมคุณจึงแนะนำหนังสือหรือแหล่งข้อมูล คำตอบที่ไม่อธิบายอะไรจะถูกลบ ดูอัตนัยที่ดีอัตนัยไม่ดีสำหรับข้อมูลเพิ่มเติม



Googling เล็กน้อยจะตอบคำถามนี้ได้นานขึ้น อย่างน้อยที่สุดมันจะให้รายชื่อผู้สมัครที่ดีซึ่งคุณสามารถใช้เพื่อถามคำถามที่เน้นมากขึ้น
Caleb

คำตอบ:


41

ฉันไม่แน่ใจว่านี้คือสิ่งที่คุณกำลังมองหา แต่ NIST มีพจนานุกรมของอัลกอริทึมและโครงสร้างข้อมูล มันเป็นพจนานุกรมที่ครอบคลุมเรื่องโครงสร้างข้อมูลและอัลกอริธึม (doh) และเป็นที่ที่ดีที่จะมองหาเมื่อฉันพบสิ่งที่ฉันไม่เคยได้ยินมาก่อน


คำตอบของคุณคือสิ่งที่ฉันกำลังมองหา คะแนนพิเศษสำหรับการเป็นอิสระ
วิศวกรโลก

สิ่งที่ตลกคือในช่วงไม่กี่วันที่ผ่านมา NIST DADS ถูกปิดจนกว่าจะมีการแจ้งเตือนเพิ่มเติมเนื่องจากการปิดตัวของรัฐบาลสหรัฐฯ! และจากนั้นเมื่อได้ยินพันของนักพัฒนากรีดร้องในครั้งเดียว ...
haylem

11

หนังสือ Skiena เป็นข้อมูลอ้างอิงที่ดีเช่นกัน: http://www.algorist.com/

หนังสือเล่มนี้ครอบคลุมทุกอย่างตั้งแต่พื้นหลังไปจนถึงพื้นที่ปัญหาต่าง ๆ (โครงสร้างข้อมูล, การค้นหา / การเรียงลำดับ, ปัญหากราฟ, การผสม / การเรียงสับเปลี่ยน / การวิเคราะห์พฤติกรรม) และแม้แต่ปัญหาของปัญหา P-NP ที่สมบูรณ์

ส่วนที่เกี่ยวข้องโดยเฉพาะอย่างยิ่งของหนังสือเล่มนี้คือแคตตาล็อกของอัลกอริธึมที่แตกต่างกัน ~ 70-75 ประเภทของอินพุตที่พวกเขาต้องการโดยทั่วไปคำอธิบายโดยรวมของปัญหาที่อัลกอริทึมเฉพาะแก้และตัวอย่างเฉพาะของแอปพลิเคชัน ส่วนบนต้นไม้ต่อท้ายจะกล่าวถึงการใช้ความพยายามและการบังคับใช้กับสตริงย่อยและการค้นหา) หากเป็นไปได้ผู้เขียนจะระบุการใช้งานที่มีอยู่สำหรับภาษาทั่วไปต่างๆ (c, c ++, Java และอื่น ๆ )


นั่นเป็นสารานุกรมอัลกอริทึมที่ใกล้เคียงที่สุดที่ฉันนึกได้ หนังสือที่ยอดเยี่ยม!
Charalambos Paschalides

8

โครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์และศิลปะการเขียนโปรแกรมคอมพิวเตอร์เป็นสิ่งที่ใกล้เคียงที่สุดที่ฉันเคยเห็นในสิ่งที่คุณต้องการ

SICP เดินผ่านโครงสร้างข้อมูลและอัลกอริทึมทั่วไป ในขณะที่มันไม่ได้เป็นสารานุกรมมันค่อนข้างดีครอบคลุมพื้นที่ขนาดใหญ่ในพื้นที่ จำกัด

สิ่งที่สามารถพูดเกี่ยวกับศิลปะการเขียนโปรแกรมคอมพิวเตอร์ที่ยังไม่ได้รับ ระวังเมื่อคุณหยิบมันขึ้นมาคุณอาจไปที่หัวข้อนั้น ๆ และอีกหลายชั่วโมงหลังจากนั้นให้ตระหนักว่าคุณได้อ่านโวลุ่มจากหน้าปกไปหน้าปก มันเป็นวิธีที่ยอดเยี่ยมในการพัฒนาโปรแกรมของคุณไปอีกระดับ


5
SICP เป็นหนังสือที่ยอดเยี่ยม แต่ฉันไม่คิดว่ามันเป็นคำแนะนำที่สมเหตุสมผลสำหรับคนที่กำลังมองหา "สารานุกรมของอัลกอริทึม" SICP ไม่ได้พยายามเป็นอย่างนั้น นอกจากนี้ OP ยังเขียนว่า ACP "ดูเหมือนสารานุกรมไม่มากเท่าที่ให้คำแนะนำ" ดังนั้นจึงควรมีความชัดเจนว่า SICP ไม่ใช่สิ่งที่เขาหรือเธอกำลังมองหา
คาเลบ

หนังสือยอดเยี่ยม แต่ไม่ใช่สารานุกรม
haylem

ค่อนข้างแน่ใจว่าฉันบอกว่ามันไม่ใช่สารานุกรม แต่ให้การแนะนำอัลกอริทึมที่ดี ในขณะที่มันไม่ได้เป็นสารานุกรมมันค่อนข้างดีที่ครอบคลุมพื้นที่กว้างในพื้นที่ จำกัด ใช่นั่นคือสิ่งที่ฉันพูด
Michael Brown

8

Cormen, Leiserson, Rivest, Stein - "Intoduction To Algorithms"

รู้เบื้องต้นเกี่ยวกับอัลกอริทึมหรือที่รู้จักกันทั่วไปว่า CLRS เป็นหนังสือเรียนอัลกอริทึมมาตรฐานที่มหาวิทยาลัยจำนวนมาก ครอบคลุมช่วงของอัลกอริทึมสำหรับการใช้งานที่หลากหลายรวมถึงการเรียงลำดับการค้นหาทฤษฎีกราฟและการคำนวณเชิงตัวเลขขั้นพื้นฐาน นอกจากนี้ยังมีการอภิปรายรายละเอียดเกี่ยวกับสัญลักษณ์ Big O, Big Omega และ Big Theta คำวิจารณ์ทั่วไปก็คือมันไม่ได้เตรียมที่จะออกแบบอัลกอริธึมใหม่ ๆ จริงๆ แต่ในฐานะที่เป็นสารานุกรมหรือพจนานุกรมของอัลกอริธึมมันก็เพียงพอแล้ว

ฉันควรทราบด้วยว่า CLRS ยังให้คำแนะนำเกี่ยวกับอัลกอริทึมที่จะใช้เมื่อใดและไม่เพียง แต่นำเสนอดัชนีทั่วไปของอัลกอริทึมและโครงสร้างข้อมูล มันมีประโยชน์เมื่อคุณมีงานที่คุณต้องการทำให้สำเร็จและต้องการคำแนะนำว่าจะทำอย่างไรดีที่สุด มีแหล่งข้อมูลที่ดีกว่าเมื่อคุณรู้ว่าคุณต้องการทำสิ่งที่คุณทำอย่างไรและคุณต้องใช้รหัสหลอก

- จากความคิดเห็นโดย @quanticle ด้านล่าง


4
คุณสามารถขยายคำตอบเพื่อรวมสิ่งที่เกี่ยวกับหนังสือเล่มนี้ให้เป็นไปตามเป้าหมายของคำถามนี้หรือไม่?

2
รู้เบื้องต้นเกี่ยวกับอัลกอริทึมหรือที่รู้จักกันทั่วไปว่า CLRS เป็นหนังสือเรียนอัลกอริทึมมาตรฐานที่มหาวิทยาลัยจำนวนมาก ครอบคลุมช่วงของอัลกอริทึมสำหรับการใช้งานที่หลากหลายรวมถึงการเรียงลำดับการค้นหาทฤษฎีกราฟและการคำนวณเชิงตัวเลขขั้นพื้นฐาน นอกจากนี้ยังมีการอภิปรายรายละเอียดเกี่ยวกับสัญลักษณ์ Big O, Big Omega และ Big Theta คำวิจารณ์ทั่วไปก็คือมันไม่ได้เตรียมที่จะออกแบบอัลกอริธึมใหม่ๆ จริงๆแต่ในฐานะที่เป็นสารานุกรมหรือพจนานุกรมของอัลกอริธึมมันก็เพียงพอแล้ว
ปริมาณ

1
ฉันควรทราบด้วยว่า CLRS ยังให้คำแนะนำเกี่ยวกับอัลกอริทึมที่จะใช้เมื่อใดและไม่เพียง แต่นำเสนอดัชนีทั่วไปของอัลกอริทึมและโครงสร้างข้อมูล มันมีประโยชน์เมื่อคุณมีงานที่คุณต้องการทำให้สำเร็จและต้องการคำแนะนำว่าจะทำอย่างไรดีที่สุด มีแหล่งข้อมูลที่ดีกว่าเมื่อคุณรู้ว่าคุณต้องการทำสิ่งที่คุณทำอย่างไรและคุณต้องใช้รหัสหลอก
ปริมาณ

Hint to Dmitry: เพียงคัดลอกความคิดเห็นของ @ quanticle เข้าสู่เนื้อหาของคำตอบเพื่อให้คำตอบของคุณยอดเยี่ยมขึ้น 1,000%
nohat

5

ในระดับบัณฑิตศึกษาในสาขาฟิสิกส์ฉันมีความสุขกับสูตรตัวเลขใน C แน่นอนมันไม่ได้ครอบคลุมอัลกอริธึมทั้งหมด แต่ให้คำอธิบายที่ยอดเยี่ยมของหลาย ๆ ที่มีประโยชน์อย่างไม่น่าเชื่อในวิทยาศาสตร์:

http://www.nr.com/

หนังสือเล่มนี้ครอบคลุมวิธีการแก้ปัญหา:

สมการเชิงเส้น

  1. สมการเชิงเส้น
  2. การประมาณค่าและการประมาณค่า
  3. การรวมฟังก์ชั่น
  4. การประเมินฟังก์ชั่น
  5. ฟังก์ชั่นพิเศษรวมถึงฟังก์ชั่นแกมม่า, ฟังก์ชั่นเบต้า, แฟกทอเรียล
  6. ตัวเลขสุ่ม - รวมถึงคำอธิบายที่ดีของความหมาย
  7. ขั้นตอนวิธีการเรียงลำดับ
  8. การค้นหาสมการรากและไม่เชิงเส้น
  9. การย่อขนาดและขยายใหญ่สุดของฟังก์ชั่น
  10. eigensystems
  11. การแปลงฟูริเยร์อย่างรวดเร็ว
  12. FFT และการวิเคราะห์สเปกตรัม
  13. คำอธิบายทางสถิติของข้อมูล
  14. การสร้างแบบจำลองของข้อมูล
  15. บูรณาการของสมการเชิงอนุพันธ์สามัญ
  16. ปัญหาขอบเขตสองจุด
  17. สมการอินทิกรัลและทฤษฎีขอบเขตอินเวอร์ส
  18. สมการเชิงอนุพันธ์ย่อยบางส่วน
  19. อัลกอริทึม "อื่น ๆ " เช่นการตรวจสอบ CRC และการบีบอัดข้อมูล

ทั้งหมดนี้เป็นคณิตศาสตร์ที่ดีสำหรับนักวิทยาศาสตร์และผู้ที่ออกแบบเอ็นจิ้นฟิสิกส์สำหรับเกม และมันไม่เพียง แต่ให้อัลกอริทึม แต่อธิบาย whys ที่อยู่เบื้องหลังพวกเขาเพื่อให้คุณสามารถใช้ได้อย่างถูกต้อง ไม่ใช่ข้อความที่เข้ารหัสตามปกติ แต่เป็นสิ่งที่คุณต้องการเมื่อคุณต้องการ

ฉันวางใจอย่างมากเมื่อใช้วิธีดาวน์ฮิลล์ซิมป์เลย์ในหลายมิติ (การเดินอะมีบา) สำหรับการวิเคราะห์ข้อมูล ยังมีเครื่องหมายดินสอของฉันอยู่ในนั้น เอ๊ะเวลาที่ดี!


1
คุณสามารถขยายคำตอบเพื่อรวมสิ่งที่เกี่ยวกับหนังสือเล่มนี้ให้เป็นไปตามเป้าหมายของคำถามนี้หรือไม่?

4

หากคุณกำลังมองหา "สารานุกรมของอัลกอริทึม" มันจะเป็นเรื่องยากที่จะผิดไปกับสารานุกรมของอัลกอริทึม ฉันไม่สามารถพูดได้ว่าฉันได้อ่านแล้ว (ราคา $ 399 มันราคาถูกสำหรับสารานุกรม ) แต่การประกาศแจ้งนั้นดูมีแนวโน้ม:

สารานุกรมของอัลกอริทึมให้ชุดที่ครอบคลุมของการแก้ปัญหาขั้นตอนวิธีที่สำคัญสำหรับนักเรียนและนักวิจัยรวมถึงการแก้ปัญหาผลกระทบสูงจากทศวรรษที่ผ่านมา

ใครบางคนแล้วอ้างสตีเวนสกินาของอัลกอริทึมการออกแบบคู่มือการใช้งาน , แต่ฉันไม่คิดว่าทุกคนยังกล่าวถึงเว็บไซต์ที่เกี่ยวข้อง Skiena ของห้วยหินขั้นตอนวิธีการเก็บข้อมูล จากเว็บไซต์:

หน้า WWW นี้มีวัตถุประสงค์เพื่อใช้เป็นคอลเลกชันที่ครอบคลุมของการใช้อัลกอริทึมสำหรับปัญหาขั้นพื้นฐานกว่าเจ็ดสิบในอัลกอริทึมแบบ combinatorial

หนังสือเล่มนี้เป็นมากกว่าแคตตาล็อกของอัลกอริธึมที่รู้จัก นอกจากนี้ยังเป็นแบบฝึกหัด (ในความหมายที่ดีที่สุด) เกี่ยวกับวิธีการตัดสินใจว่าอัลกอริทึมใดที่จะใช้ให้เหมาะกับปัญหาและสถานการณ์ของคุณมากที่สุด พื้นที่เก็บข้อมูลในทางกลับกันเป็นสารานุกรมมากขึ้นในธรรมชาติ ไม่จำเป็นต้องมีรายละเอียดมากมายเกี่ยวกับวิธีการใช้อัลกอริทึมแต่ละอย่างด้วยตัวคุณเอง แต่มันอธิบายว่าอัลกอริทึมทำอะไรและทำงานอย่างไรโดยทั่วไปคำศัพท์ที่อ่านได้มักนำมาจากหนังสือ ขั้นตอนวิธี


2

Rosetta รหัสวิกิพีเดียเป็นคอลเลกชันที่ดีของการใช้งานของอัลกอริทึมที่พบบ่อยในหลายภาษา มันไม่ได้เป็นเชิงวิชาการทั้งหมด แต่ให้ข้อมูลและความสนุกในการอ่าน

ในคำพูดของตัวเอง:

รหัส Rosetta เป็นเว็บไซต์chrestomathyการเขียนโปรแกรม แนวคิดคือการนำเสนอวิธีแก้ปัญหาให้กับงานเดียวกันในภาษาที่แตกต่างกันมากที่สุดเท่าที่จะเป็นไปได้เพื่อแสดงให้เห็นว่าภาษามีความเหมือนและแตกต่างกันอย่างไร

ข้อได้เปรียบหลักเหนือทรัพยากรอื่น ๆ (เช่น NIST Dictionary ของอัลกอริทึมและโครงสร้างข้อมูล ) คือมันช่วยให้คุณดูการใช้งานหลายอย่างสำหรับภาษาที่แตกต่างกัน ซึ่งจะมีประโยชน์สำหรับวัตถุประสงค์ต่าง ๆ (เปรียบเทียบความเป็นไปได้ตรวจสอบความเป็นไปได้ในภาษาหรืออื่น ๆ ... )

ตัวอย่างเช่นหน้า QuickSortจัดเตรียม (ณ วันที่ 2013-10-07) มีการใช้งานอย่างน้อย 89 ครั้ง


คุณจะอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่มันทำและทำไมคุณถึงแนะนำว่าเป็นการตอบคำถามที่ถาม "คำตอบสำหรับลิงก์เท่านั้น"ไม่ได้รับการต้อนรับอย่างล้นหลามที่กองแลกเปลี่ยน
ริ้น

@gnat: โดยปกติแล้วจะเห็นด้วย แต่แตกต่างกันอย่างไรสำหรับคำตอบ "อ้างอิงเฉพาะหนังสือ" นอกจากนี้ฉันคิดว่า "การรวบรวมการใช้งานของอัลกอริทึมทั่วไปในหลายภาษา" ครอบคลุมถึงสิ่งที่มันทำ นอกจากนี้ยังเป็น (หรือน้อย) รายละเอียดที่เป็นคำตอบที่ได้รับการยอมรับถ้าคุณมองใกล้พอ :)
haylem

@gnat: เอาล่ะเพิ่มอีก
haylem

@AnnaLear: ขออภัยฉันคิดว่าการแก้ไขของคุณถูกต้องอย่างสมบูรณ์เพื่อให้โพสต์ของฉันสั้นและในการติดตาม แต่ดูเหมือนเหมาะสมที่จะนำการเปรียบเทียบกลับมาเกี่ยวกับการเปลี่ยนแปลงตามคำร้องขอของ gnat
haylem

0

ในขณะที่มีหนังสือแนะนำที่ยอดเยี่ยมและไร้กาลเวลาในเรื่องนี้ฉันแทบจะไม่คิดว่าคุณจะพบสารานุกรมดังกล่าว

  • สารานุกรมเกี่ยวกับคณิตศาสตร์ครอบคลุมการวิจัยนับพันปี อัลกอริทึมในอีกทางหนึ่งแทบจะไม่ได้รับการศึกษามาเป็นเวลาหนึ่งศตวรรษ วิทยาการคอมพิวเตอร์ทั้งหมดเป็นที่เข้าใจกันแทบทุกคนและทุกสิ่งยังคงเคลื่อนไหวอย่างรวดเร็ว ถ้าตอนนี้มีสารานุกรมฉันเดาว่าคุณจะโยน 90% ออกไปนอกหน้าต่างใน 10-20 ปี และจากมูลค่า 10% ที่เก็บได้มากกว่าครึ่งถูกพิมพ์ไปแล้วเมื่อครึ่งศตวรรษก่อน คู่มือคณิตศาสตร์ส่วนใหญ่จะเป็นข้อมูลล่าสุดในอีกร้อยปีนับจากนี้

  • คณิตศาสตร์นั้นบริสุทธิ์และอยู่ในตัวเอง สิ่งนี้แทบจะใช้ไม่ได้กับ จริง ๆ แล้วมันสามารถถูกคิดว่าเป็นเขตข้อมูลได้เนื่องจากเขตข้อมูลมักจะทำงานในพื้นที่ปัญหาที่กำหนดไว้อย่างดีในขณะที่อัลกอริทึมทำงานจริงภายในพื้นที่โซลูชันที่กำหนดไว้น้อยกว่าเท่านั้น
    ดังนั้นหากมีการรวบรวมสารานุกรมเกี่ยวกับอัลกอริทึมมันไม่ชัดเจนว่าจะรวมอะไรถ้าคุณต้องการให้มันครอบคลุม ทฤษฎีกราฟ? พีชคณิตเชิงเส้น? การวิเคราะห์เชิงตัวเลข?

IMHO ตอนนี้ทรัพยากรที่ดีที่สุดที่เติมเต็มบทบาทของสารานุกรมคือ "อินเทอร์เน็ต" (ดู) จุดของสารานุกรมคือการจัดทำดัชนีความรู้ที่ครอบคลุมและสามารถค้นหาได้ (ในบางหัวข้อ) ส่วนตัวแล้วฉันพบทั้งรายการนี้และรายการนี้ค่อนข้างล้นหลาม ในคำตอบอื่น ๆ มีการเชื่อมโยงฐานข้อมูลอัลกอริทึมที่ยอดเยี่ยมมากมาย

ดังนั้นในขณะที่คุณไม่สามารถคาดหวังคุณภาพระดับเดียวกับที่คุณคาดหวังจากสารานุกรมที่เติมชั้นหนังสือของคุณคุณจะได้รับระดับของความตรงต่อเวลาที่ต้องการเพื่อชดเชยเยาวชนของสาขาที่คุณต้องการรู้


0

เท่าที่มีอยู่ฉันคิดว่า Wikipedia เป็นสิ่งที่ใกล้เคียงที่สุดกับสิ่งที่คุณกำลังมองหา หากต้องการปัญญามันอาจมีประโยชน์ในการสร้าง "เท็มเพลตอัลกอริทึม" ที่กำหนดไว้มากขึ้นใน Wikipedia เพื่อจุดประสงค์นี้

หมายเหตุสั้น ๆ เกี่ยวกับThe Art of Computer Programming : เมื่อเสร็จแล้วจะต้องมี "บทสรุป" ปริมาณและแม้ว่าที่จะไม่ช่วยคุณตอนนี้มันอาจจะประมาณสิ่งที่คุณกำลังมองหา TAOCPเป็นสารานุกรมสำหรับสิ่งที่ครอบคลุม แต่ยังไม่สมบูรณ์และบุคลิกภาพของ Knuth นั้นเป็นเช่นนั้นเขาจะไม่รวมสิ่งต่าง ๆ เว้นแต่เขาจะทำการค้นคว้าอย่างละเอียดถี่ถ้วน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.