ไม่ได้เขียนบล็อกมานานตั้งแต่ต้นปีเหมือนเดิมเพราะยุ่งมาก แต่วันนี้รู้สึกอยากเขียนเรื่อง TCAS สักหน่อย เพราะตัวเองก็ต้องศึกษาระบบนี้ เนื่องจากลูกก็สอบเข้ามหาวิทยาลัยปีนี้ และก็มองเห็นปัญหาว่าระบบในรอบ 3 นี้มันจะมีปัญหากั๊กที่แน่ ก็เลยบอกลูกว่ายังไงก็ต้องตั้งใจให้เต็มที่ทำคะแนนให้สูง ๆ เข้าไว้ และลูกก็ทำได้ ดังนั้นเขาไม่ใช่เด็กที่มีปัญหาในรอบนี้แต่อย่างใด ประกอบกับเขาอยู่สายศิลป์-คำนวณ และคณะที่เขาเลือกปีนี้ก็มาแยกสายวิทย์ กับสายศิลป์-คำนวณพอดี ดังนั้นก็ยิ่งเข้าทางเขา สำหรับใครที่ไม่ได้ตามข่าวหรือยังไม่ค่อยเข้าใจระบบนี้สามารถอ่านได้จากบทความนี้นะครับ
https://www.the101.world/from-admission-to-tcas/
และปัญหาที่เกิดขึ้นสามารถอ่านได้จากบทความนี้นะครับ
https://www.khaosod.co.th/special-stories/news_1173473
ปัญหาหลักที่เกิดในรอบ 3 ก็คือการกันที่กันหรือเรียกว่ากั๊กที่ครับ ระบบก่อนหน้า TCAS ก็กั๊กกัน แต่พวกที่เลือกหมอเขาจะประกาศผลไปต่างหากอยู่แล้ว และในระบบก่อนหน้านี้ แต่ละมหาวิทยาลัยจะบริหารจัดการกันเอง ด้วยการเรียกเด็กที่ติดสำรองมาแทนเด็กที่ติดตัวจริงที่ไม่มาสอบสัมภาษณ์ (เพราะเลือกที่อื่นไปแล้ว) แต่ในปีนี้ที่ประชุมอธิการบดีแห่งประเทศไทย (ทปอ.) ซึ่งเป็นผู้คิดระบบ TCAS ไม่รู้มีอะไรมาดลใจ ให้เอาพวกหมอมารวมในรอบรับตรงนี้ด้วย และไม่ให้มีการเรียกสำรองอีกต่างหาก ผลก็คือเกิดมหกรรมการกั๊กที่อย่างเป็นรูปธรรมตามลิงก์ข้างบนครับ
มีคนถามทปอ.ว่าทำไมรอบ 3 ไม่ทำเหมือนรอบ 4 คือให้เรียงลำดับที่ตัวเองต้องการแล้วก็ให้ติดเฉพาะอันดับสูงสุดที่ตัวเองเลือกไว้ ทปอ.บอกทำไม่ได้ เพราะในรอบ 3 นี้คณะและมหาวิทยาลัยต่าง ๆ ใช้เกณฑ์ไม่เหมือนกัน เช่นบางคณะเอาแต่ GAT/PAT บางคณะใช้ 9 วิชาสามัญ ดังนั้นต้องให้เด็กติดทุกสาขาที่ผ่านเกณฑ์แล้วให้เด็กตัดสินใจเลือกทีหลัง (ซึ่งเป็นที่มาแห่งมหกรรมการกั๊กที่)
ผมลองมานั่งคิดดูว่าทำไม่ได้จริงหรือ คิดไปคิดมาก็เห็นว่าน่าจะทำได้นะ ก็เลยมาเขียนบทความนี้เพื่อลองเสนอว่าถ้าจะออกแบบโปรแกรมรอบรับตรงร่วมกันให้สามารถทำให้เด็กเลือกอันดับได้และติดอันดับสูงสุดอันดับเดียวจะทำยังไง หลักการคืออย่างนี้ครับ หนึ่งเลยเอาพวกหมอออกไปอยู่ในรอบต่างหาก (จริง ๆ จะไม่แยกก็ได้ แต่จะทำให้ระบบต้องทำงานหนักโดยไม่จำเป็น เพราะพวกหมอเขามีระบบของเขาอยู่แล้ว) จากนั้นรอบรับตรงร่วมกันก็ให้เด็กเลือกที่ต้องการได้ 4 อันดับ จากนั้นก็ส่งชื่อเด็กให้มหาวิทยาลัยทำการเรียงลำดับคะแนนของเด็กตามเกณฑ์ที่แต่ละคณะใช้ หรือทปอ.จะเขียนโปรแกรมทำให้เองก็แล้วแต่ เช่นคณะไหนใช้แต่ GAT/PAT ก็คำนวณโดยใช้แค่ GAT/PAT และเรียงลำดับมา โดยคะแนนของเด็กที่อยู่ในช่วงจำนวนที่คณะจะรับจะเรียกว่าเป็นตัวจริง ส่วนที่เหลือก็จะเป็นตัวสำรอง เช่นบัณชีจุฬาจะรับ 150 คน เด็กที่อยู่ใน 150 คนแรกก็เป็นตัวจริงของบัญชีจุฬา ที่เหลือก็เป็นตัวสำรอง
เมื่อได้คะแนนเรียงตามลำดับมาแล้วก็เริ่มทำการจัดอันดับตามที่นักเรียนเลือก โดยรอบแรกก็จัดจากอันดับที่เลือกเป็นอันดับ 1 ก่อน ดังนี้
ทำจนกว่า จะไม่มีนักเรียนที่สามารถจัดอันดับ 1 ได้ (คือทำจนสามารถจัดนักเรียนทุกคนที่เลือกอันดับ 1 ได้ หรือจนกว่าคณะที่เลือกเป็นอันดับ 1 ของนักเรียนเต็มแล้ว)
อ่านข้อมูลของนักเรียนโดยอ่านจากอันดับ 1 ที่เลือก
ถ้านักเรียนติด (อยู่ในกลุ่มตัวจริง ของอันดับ 1 ที่เลือก)
เขียนข้อมูลนักเรียนและสาขาที่ติด
เช็คว่านักเรียนติดอันดับ 2 3 และ 4 ด้วยหรือไม่ ถ้าติดอันดับใด ให้ลบชื่อนักเรียนออกจากสาขาที่ติดนั้น แล้วเลื่อนอันดับสำรองถัดไปของสาขานั้นเข้ามาเป็นตัวจริง (พูดง่าย ๆ นี่คือการเรียกตัวสำรองนั่นเอง)
กลับไปที่ต้นลูป
เมื่อทำจบรอบนี้เราก็จะได้นักเรียนที่ได้สาขาที่ตัวเองเลือกเป็นอันดับ 1
รอบต่อไปก็ทำเหมือนกันแต่ทำอันดับ 2 3 และ 4 ตามลำดับ ซึ่งถ้าถึงอันดับ 4 แล้วนักเรียนก็ยังไม่ติดก็แสดงว่านักเรียนไม่ติดในรอบนี้ ต้องไป TCAS รอบ 4 ต่อไป
ก็ต้องบอกว่านี่เป็นแนวคิดคร่าว ๆ นะครับ ไม่ได้คำนึงถึงเรื่องประสิทธิภาพแต่อย่างใด เพียงแต่อยากแสดงให้เห็นว่ามันไม่จำเป็นต้องเอาคะแนนที่ถูกคำนวณมาแบบเดียวกันมาจัดลำดับกันอย่างเดียว เท่าที่ดูโปรแกรมอาจจะทำงานเยอะหน่อยในการจัดอันดับ 1 หลังจากนั้นก็น่าจะทำงานน้อยลง โดยเฉพาะการจัดอันดับ 4 ก็น่าจะง่ายแล้ว เพราะการเช็คก็จะง่ายขึ้นและไม่ต้องไปทำเรื่องเรียกตัวสำรองอะไรอีก
มีความเห็นอะไร หรือเห็นว่าขั้นตอนวิธีที่นำเสนอมีข้อบกพร่องอะไรก็สามารถแลกเปลี่ยนกันได้ครับ