ภาพรวม ของ การเขียนโปรแกรมเชิงแข่งขัน

เป้าหมายของการเขียนโปรแกรมเชิงแข่งขันคือการเขียนและส่งรหัสต้นฉบับของโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหาต่าง ๆ ที่ผู้ออกโจทย์กำหนดให้ ปัญหาที่ใช้ในการแข่งขันจะเกี่ยวกับตรรกะหรือคณิตศาสตร์ เช่น คณิตศาสตร์เชิงการจัด ทฤษฎีจำนวน ทฤษฎีกราฟ เรขาคณิต สตริง โครงสร้างข้อมูล[6][7] และในการแข่งขันบางรายการจะนิยมปัญหาเกี่ยวกับปัญญาประดิษฐ์เป็นอย่างมาก

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

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

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

ใกล้เคียง

การเข้ารหัสทางประสาท การเข้าถึงอินเทอร์เน็ต การเข้าเมืองกับอาชญากรรม การเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงแข่งขัน การเข้าตีเจาะ (การสงคราม) การเขียนโปรแกรมคอมพิวเตอร์ การเข้ารหัส การเขียนโปรแกรมเชิงฟังก์ชัน การเขียน

แหล่งที่มา

WikiPedia: การเขียนโปรแกรมเชิงแข่งขัน http://acm.hust.edu.cn:8080/judge/toIndex.action http://codeforces.com/blog/entry/456 http://www.facebook.com/hackercup http://code.google.com/codejam http://code.google.com/codejam/quickstart.html http://www.ibm.com/developerworks/university/stude... http://apps.topcoder.com/wiki/display/tc/Algorithm... http://community.topcoder.com/tco12/overview-spons... http://www.vcharkarn.com/olympic/ http://icpc.baylor.edu/q/Factsheet