มีการใช้การวิเคราะห์ที่ราบรื่นนอกสถาบันการศึกษาหรือไม่


24

การวิเคราะห์ที่ราบรื่นนั้นหาทางเข้าไปสู่การวิเคราะห์กระแสหลักของอัลกอริทึมหรือไม่? เป็นเรื่องปกติหรือไม่ที่ผู้ออกแบบอัลกอริทึมจะใช้การวิเคราะห์ที่ราบรื่นกับอัลกอริทึมของพวกเขา


11
ผู้คนนำการวิเคราะห์ความซับซ้อนมาใช้กับอัลกอริธึมภายนอกสถาบันการศึกษาหรือไม่?
Dave Clarke

2
สิ่งที่ @DaveClarke พูด; บางทีเขาควรขอการวิเคราะห์ที่เข้มงวด (หรือไม่สำคัญ) ฉันคาดว่าผู้ปฏิบัติงานหลายคนดูที่อัลกอริทึมของพวกเขานับความลึกในการซ้อนของลูปและพูดว่า: "นี่คือ !" O(n3)
Raphael

3
ในขณะที่มองหาใด ๆ ที่ใช้ในการวิเคราะห์เรียบอื่น ๆ กว่า Simplex ผมพบว่ารายการ curated โดยผู้ชายคนหนึ่งที่ค้นพบเทคนิค
Raphael

1
@DaveClarke แล้วคนที่ทำงานกับ IBM หรือ HP หรือ NTT ล่ะ? พวกเขาไม่ควรใช้การวิเคราะห์แบบนั้นหรือ
Marcos Villagra

1
@DaveClarke ฉันทำ
Kevin

คำตอบ:


12

ฉันอาจจะผิด แต่ฉันคิดว่าการวิเคราะห์ที่ราบรื่นเป็นวิธีที่อธิบายพฤติกรรมในการปฏิบัติของอัลกอริทึมที่มีการรับประกันทางทฤษฎีที่ไม่ดี (Simplex, k-mean และอื่น ๆ ) ฉันไม่แน่ใจว่ามันจะหมายถึงอะไรในการใช้การวิเคราะห์ที่ราบรื่นในทางปฏิบัติยกเว้นการพิสูจน์ให้เห็นถึงการใช้ฮิวริสติกเฉพาะที่มีประสิทธิภาพแย่ที่สุด ("ฮิวริสติกของฉันมีพฤติกรรมเลวร้ายที่สุด blah blah แต่การวิเคราะห์ที่ราบรื่น ทำได้ดีในทางปฏิบัติ ฯลฯ ฯลฯ ")


2
ปัญหาคือจนถึงตอนนี้ความสำเร็จที่ยิ่งใหญ่สำหรับการวิเคราะห์ที่ราบรื่นนั้นได้อธิบายการฝึกฝนในปัจจุบันดังนั้นผู้ปฏิบัติงานอาจตอบสนองโดยการพูดว่า "เป็นสิ่งที่ดี ฉันไม่รู้ว่าถ้ามีคนตัดสินใจใช้ฮิวริสติกที่รู้จักกันน้อยกว่าเพราะการวิเคราะห์ที่ราบรื่น
Suresh

การวิเคราะห์ที่ราบรื่นเป็นทางการนั้นเป็นเรื่องยากมากไม่มีเหตุผลที่ทุกคนในทางทฤษฎีจะไม่ควรฝึกฝน ในทางกลับกันถ้าคุณคิดว่ามันเป็นฮิวริสติกที่ใช้ในการวิเคราะห์อัลกอริทึม (กล่าวคืออินพุทเป็นแบบกึ่งสุ่ม) ดังนั้นมันอาจจะใช้ตลอดเวลา
Yuval Filmus

3

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

  • วิธีการประมาณ ที่นี่คุณใช้สมมติฐานที่ทำให้เข้าใจง่ายจำนวนมากเพื่อพยายามคาดการณ์เวลาทำงานของอัลกอริทึม คล้ายกับสิ่งที่นักฟิสิกส์เชิงทฤษฎี (เคยทำ)
  • การทดลอง คุณเรียกใช้อัลกอริทึมของคุณและวัดสถิติหลายอย่าง - เวลาที่แต่ละส่วนทำงานเท่าไหร่จำนวนหน้าที่แต่ละฟังก์ชันถูกเรียกใช้บ่อยแค่ไหนที่แต่ละสาขาทำงานและอื่น ๆ ข้อมูลนี้สามารถใช้เพื่อปรับแต่งอัลกอริทึม การทดลองใช้เพื่อค้นหาว่ามีการประมาณบางอย่างขณะทำการวิเคราะห์อัลกอริทึมที่ใช้ในทางปฏิบัติหรือไม่

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

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


"ในขณะที่ในภาคการศึกษาเป้าหมายคือการหาสรรพสิ่งที่ถูกต้องขอบเขตบนของเวลาทำงาน" - นั่นคือเป้าหมายไม่เป้าหมาย นอกจากนี้ยังมีการวิเคราะห์กรณีศึกษาโดยเฉลี่ยมากแม้ว่านักเรียน CS ทั่วไปอาจไม่เห็นมากนัก (เพราะค่อนข้างยาก) "เพื่อให้เข้าใจว่าอัลกอริทึมทำงานอย่างไร" เป็นพื้นฐานของอัลกอริทึมทั้งหมดในสถาบันการศึกษา
ราฟาเอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.