กลับไปหน้าบทความ

อ่าน 2 นาที

วิศวกรรมอัลกอริทึม

วิศวกรรมอัลกอริทึมมุ่งเน้นไปที่การออกแบบ การวิเคราะห์ การนำไปใช้ การเพิ่มประสิทธิภาพ การวิเคราะห์ประสิทธิภาพ และการประเมินเชิงทดลองของอัลกอริทึม คอมพิวเตอร์

วิศวกรรมอัลกอริทึม

วิศวกรรมอัลกอริทึมมุ่งเน้นไปที่การออกแบบ การวิเคราะห์ การนำไปใช้ การเพิ่มประสิทธิภาพ การวิเคราะห์ประสิทธิภาพ และการประเมินเชิงทดลองของอัลกอริทึม คอมพิวเตอร์ โดยเชื่อมโยงช่องว่างระหว่างทฤษฎีอัลกอริทึมและการประยุกต์ใช้อัลกอริทึมในทางปฏิบัติในวิศวกรรมซอฟต์แวร์[ 1 ] เป็นระเบียบวิธีทั่วไปสำหรับการวิจัยอัลกอริทึม[ 2 ]

ต้นกำเนิด

ในปี 1995 รายงานจาก การประชุมเชิงปฏิบัติการที่ได้รับการสนับสนุนจาก NSF "ซึ่งมีวัตถุประสงค์เพื่อประเมินเป้าหมายและทิศทางปัจจุบันของ ชุมชน ทฤษฎีการคำนวณ (TOC)" ระบุว่าความเร็วในการนำความรู้เชิงทฤษฎีไปใช้โดยผู้ปฏิบัติงานนั้นช้า ซึ่งเป็นปัญหาสำคัญ และได้เสนอแนะมาตรการต่างๆ เพื่อแก้ไขปัญหาดังกล่าว

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

นอกจากนี้ แนวทางอัลกอริธึมที่มีแนวโน้มดีก็ถูกละเลยเนื่องจากความยากลำบากในการวิเคราะห์ทางคณิตศาสตร์[ 2 ]

คำว่า "วิศวกรรมอัลกอริทึม" ถูกนำมาใช้โดยเฉพาะเป็นครั้งแรกในปี พ.ศ. 2540 ในการประชุมเชิงปฏิบัติการด้านวิศวกรรมอัลกอริทึมครั้งแรก (WAE97) ซึ่งจัดโดยGiuseppe F. Italiano [ 4 ]

ความแตกต่างจากทฤษฎีอัลกอริทึม

วิศวกรรมอัลกอริทึมไม่ได้มีจุดประสงค์เพื่อทดแทนหรือแข่งขันกับทฤษฎีอัลกอริทึม แต่พยายามที่จะเสริมสร้าง ปรับปรุง และเพิ่มพูนแนวทางที่เป็นทางการของทฤษฎีอัลกอริทึมด้วยอัลกอริทึมเชิงทดลอง (หรือที่เรียกว่าอัลกอริทึมเชิงประจักษ์)

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

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

ระเบียบวิธีวิจัย

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

โมเดลที่สมจริงและข้อมูลป้อนเข้าจริง

แม้ว่าแอปพลิเคชันเฉพาะจะอยู่นอกเหนือวิธีการของวิศวกรรมอัลกอริทึม แต่แอปพลิเคชันเหล่านี้มีบทบาทสำคัญในการสร้างแบบจำลองที่สมจริงของปัญหาและเครื่องจักรพื้นฐาน และให้ข้อมูลป้อนเข้าจริงและพารามิเตอร์การออกแบบอื่นๆ สำหรับการทดลอง[ 2 ]

ออกแบบ

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

การวิเคราะห์

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

การดำเนินการ

ช่องว่างความหมายขนาดใหญ่ระหว่างความเข้าใจเชิงทฤษฎี อัลกอริทึมที่กำหนด ภาษาโปรแกรม และฮาร์ดแวร์ ก่อให้เกิดความท้าทายต่อการใช้งานอัลกอริทึมอย่างมีประสิทธิภาพ แม้แต่อัลกอริทึมที่เรียบง่าย เนื่องจากรายละเอียดการใช้งานเล็กๆ น้อยๆ อาจส่งผลกระทบต่อพฤติกรรมการทำงาน วิธีเดียวที่น่าเชื่อถือในการเปรียบเทียบการใช้งานอัลกอริทึมหลายๆ แบบ คือการใช้เวลาจำนวนมากในการปรับแต่งและวิเคราะห์ประสิทธิภาพ เรียกใช้อัลกอริทึมเหล่านั้นบนสถาปัตยกรรมหลายๆ แบบ และดูรหัสเครื่อง ที่สร้างขึ้น [ 2 ]

การทดลอง

ดูเพิ่มเติม: อัลกอริทึมเชิงทดลอง

วิศวกรรมประยุกต์

การนำอัลกอริทึมที่ใช้ในการทดลองไป ใช้จะแตกต่างจากโค้ดที่ใช้ในแอปพลิเคชันอย่างมาก ในขณะที่แบบแรกให้ความสำคัญกับการสร้างต้นแบบอย่างรวดเร็ว ประสิทธิภาพ และการวัดผลระหว่างการทดลอง แต่แบบหลังต้องการการทดสอบอย่างละเอียด การบำรุงรักษา ความเรียบง่าย และการปรับแต่งสำหรับอินพุตประเภทเฉพาะ[ 2 ]

ไลบรารีอัลกอริทึม

ไลบรารีอัลกอริทึมที่มีเสถียรภาพและผ่านการทดสอบมาอย่างดี เช่นLEDAมีบทบาทสำคัญในการถ่ายทอดเทคโนโลยีโดยเร่งการนำอัลกอริทึมใหม่ไปใช้ในแอปพลิเคชัน ไลบรารีเหล่านี้ช่วยลดการลงทุนและความเสี่ยงสำหรับผู้ปฏิบัติงาน เนื่องจากช่วยลดภาระในการทำความเข้าใจและนำผลการวิจัยทางวิชาการไปใช้

การประชุม

มีการจัดการประชุมหลักด้านวิศวกรรมอัลกอริทึมสองครั้งต่อปี ได้แก่:

การประชุมเชิงปฏิบัติการด้านวิศวกรรมอัลกอริทึม (WAE'97) ประจำปี 1997 จัดขึ้นที่เมืองเวนิส (อิตาลี) ระหว่างวันที่ 11-13 กันยายน พ.ศ. 2540 การประชุมเชิงปฏิบัติการด้านวิศวกรรมอัลกอริทึมระดับนานาชาติครั้งที่ 3 (WAE'99) จัดขึ้นที่ลอนดอน สหราชอาณาจักร ในเดือนกรกฎาคม พ.ศ. 2542 [ 6 ] การประชุมเชิงปฏิบัติการด้านวิศวกรรมอัลกอริทึมและการทดลองครั้งแรก (ALENEX99) จัดขึ้นที่เมืองบัลติมอร์ รัฐแมริแลนด์ ระหว่างวันที่ 15-16 มกราคม พ.ศ. 2542 [ 7 ] โดย ได้รับการสนับสนุนจากDIMACSศูนย์คณิตศาสตร์ดิสครีตและวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี (ที่มหาวิทยาลัยรัตเกอร์ส ) พร้อมด้วยการสนับสนุนเพิ่มเติมจากSIGACTกลุ่มความสนใจพิเศษด้านอัลกอริทึมและทฤษฎีการคำนวณของ ACM และ SIAM สมาคม คณิตศาสตร์อุตสาหกรรมและประยุกต์[ 7 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Algorithm_engineering&oldid=1354588539 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ วิศวกรรมอัลกอริทึม

วิศวกรรมอัลกอริทึมมุ่งเน้นไปที่การออกแบบ การวิเคราะห์ การนำไปใช้ การเพิ่มประสิทธิภาพ การวิเคราะห์ประสิทธิภาพ และการประเมินเชิงทดลองของอัลกอริทึม คอมพิวเตอร์

ต้นกำเนิด

ในปี 1995 รายงานจาก การประชุมเชิงปฏิบัติการที่ได้รับการสนับสนุนจาก NSF "ซึ่งมีวัตถุประสงค์เพื่อประเมินเป้าหมายและทิศทางปัจจุบันของ ชุมชน ทฤษฎีการคำนวณ (TOC)" ระบุว่าความเร็วในการนำความรู้เชิงทฤษฎีไปใช้โดยผู้ปฏิบัติงานนั้นช้า ซึ่งเป็นปัญหาสำคัญ...

ความแตกต่างจากทฤษฎีอัลกอริทึม

วิศวกรรมอัลกอริทึมไม่ได้มีจุดประสงค์เพื่อทดแทนหรือแข่งขันกับทฤษฎีอัลกอริทึม แต่พยายามที่จะเสริมสร้าง ปรับปรุง และเพิ่มพูนแนวทางที่เป็นทางการของ ทฤษฎีอัลกอริทึมด้วยอัลกอริทึมเชิงทดลอง (หรือที่เรียกว่าอัลกอริทึมเชิงประจักษ์)

ระเบียบวิธีวิจัย

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