ผ่ากฎ (Admission) อลเวง

posted on 12 Apr 2008 02:15 by ch-a-m-p

วันนี้น้องผมไปปรึกษาเรื่องการเลือกคณะที่สถาบันแห่งหนึ่งมา แล้วเอามาปรึกษาผมอีกที ว่าจะเลือกคณะยังไงดี ผมก็ยุไปว่า อันดับ 1 นี่อยากเอาอะไรที่พอเป็นไปได้ก็เอาเลย เสี่ยงซักหน่อยก็ไม่เป็นไร

แต่น้องผมบอกว่า ที่สถาบันบอกว่า (quote กันหลายชั้นจัง) สมมติถ้าเลือกคณะนึงเป็นอันดับ 1 มีโอกาสติด 80% แต่ถ้าเปลี่ยนไปเลือกคณะเดิมเป็นอันดับ 2 โอกาสติดคณะนั้นจะลดลงจาก 80% ไป

.

.

เฮ้ย มันมียังงี้ด้วยเรอะ!

ถ้าเป็นวิธีคิดตามที่เคยเข้าใจ ก็เอาคะแนนแต่ละคนมาเรียงจากสูงไปต่ำ แล้วเริ่มจัดคนเข้าคณะเริ่มจากคนที่ได้คะแนนที่ 1 ก่อน ถ้าคณะที่เลือกอันดับ 1 ไม่เต็ม ก็ได้ไปเลย แต่ถ้าเต็มก็ดูอันดับ 2,3,4 ต่อไป ถ้าเต็มหมดทุกคณะที่เลือกแล้วก็เป็นอันจบกัน

algorithm นี้ดูดีมีเหตุผลสุดๆ แถมยังเขียนโปรแกรมได้ง่ายๆ อีกตะหาก

แต่เดี๋ยว คะแนนมันมีหลายสูตรตามใจคณะ ตามใจมหาลัยนี่หว่า แล้วมันจะเอาคะแนนตัวไหนมาเรียงล่ะ ไม่ว่าจะเลือกคะแนนสูตรไหนมาเรียง คะแนนสูตรอื่นก็จะเสียเปรียบ หรือวิธีนี้ไม่ใช่?

.

.

วิธีที่น้องบอกมา เท่าที่จับความได้ คือ เริ่มจากการจับกลุ่มคนสมัครตามคณะที่เลือกอันดับ 1 คณะเดียวกันไว้รวมกันซะก่อน แล้วแต่ละกลุ่มก็ดูอีกทีว่าจำนวนคนเกินที่กำหนดหรือเปล่า ถ้าไม่เกินก็รับหมด ถ้าเกินก็ดูคะแนนซะแล้วรับตามที่มีที่ว่างอยู่ จากนั้นก็เอาคนที่เหลือมาจับกลุ่มใหม่ตามคณะที่เลือกอันดับ 2 แล้วทำแบบเดิม และแบบเดียวกับอันดับ 3,4 ส่วนพวกที่เหลือตอนสุดท้ายก็เกมโอเวอร์ไป

อืม ก็เป็น algorithm ที่ฟังดูเป็นไปได้อีกวิธีนึง ตัดปัญหาเรื่องสูตรคิดคะแนนหลายสูตรได้เด็ดขาดเลย และประโยคที่บอกว่า เลือกคณะเดิมแต่เปลี่ยนอันดับโอกาสติดจะต่างกันก็จริงไปด้วย

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

เผื่อใครงง ตัวอย่างเช่น นาย ก ได้คะแนน 3000 คะแนน เลือกคณะ A มหาลัย B เป็นอันดับ 1 แต่นาย ข ได้คะแนน 7000 เลือกคณะอื่นเป็นอันดับ 1 และเลือกคณะ A มหาลัย B เป็นอันดับ 2 แบบนี้ก็มีโอกาสที่นาย A (ซึ่งคะแนนต่างกับ B มากๆ) จะสอบติด แต่ B กลับสอบไม่ติด เพียงเพราะลำดับต่างกัน?

แล้วแบบนี้มันจะใช้ได้จริงๆ เหรอ?

.

.

ถ้าไม่ใช่ แล้วตกลงใช้วิธีไหนกันแน่ ในเว็บรับสมัคร ส่วนของระเบียบการก็ไม่มีบอกเรื่องนี้ (ระเบียบการบนเว็บทำได้ค่อนข้างแย่ bookmark ไม่ถูกต้องเลย)

จะโทรไปถาม call center ก็คู่สายไม่เคยว่างเลย (มีแค่ 15 คู่สาย) แถมถึงโทรติด โอเปอร์เรเตอร์จะรู้เรื่องนี้เหรอ?

หรือว่ากันจริงๆ ผอ.สกอ. จะรู้เรื่องนี้เหรอ? พนักงานใน สกอ. จะรู้เรื่องนี้เหรอ? อาจมีแค่คนที่เขียนโปรแกรมตัดสินผล admission เท่านั้นที่รู้

จะว่าไปแล้วก็อยากเห็น code โปรแกรมตัดสินการเลือกคณะนี่จริงๆ จะได้กระจ่างกันไปเลย

แล้วนี่แสดงว่าทุกคนกำลังเลือกคณะโดยไม่รู้กฎที่แท้จริงเลย นี่ไม่ใช่เกมวัดดวงนะที่เล่นไปก่อนแล้วค่อยมารู้ว่าเฮ้ยตูเข้ารอบแล้ว (เอ๊ะ หรือว่าใช่หว่า?)

แล้วที่ผ่านมา (ถ้านับเฉพาะ admission ก็ 3 ปี) นี่ก็ไม่รู้กฎที่แท้จริงกันมาตลอด เอ๊ะ ตอนผมเลือก ก็ผ่านกฎนี้มานี่หว่า... ทำไมไม่แปลกใจตั้งแต่ตอนนั้น สงสัยเพราะเลื่อนหลายรอบ :D

.

.

edit เพิ่มเติม

คุยกับ lancaster แล้วคิดว่า มีวิธีนึงที่เป็นไปได้ และยุติธรรมพอ แต่เนื้อหาส่วนต่อจากนี้จะเป็นเชิง programming นิดหน่อย (อาจงง)

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

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

คำถามเก็บไปคิด (ไม่คิดตอนนี้ ง่วงนอน)

  • วิธีนี้จะได้ผลแตกต่างกันหรือเปล่าถ้าโปรแกรมเริ่มคำนวนจากคนละคณะกัน (ไม่น่าต่าง เพราะมีการย้อนกลับขึ้นไปคิดคณะบนตลอด)
  • โปรแกรมนี้มี Big-O เท่าไหร่ ถ้าข้อนี้ออกเป็นข้อสอบวิชา Discrete Mathematics คงทำไม่ได้เกือบทั้งภาค :P
  • ว่างๆ น่าลองเขียนโปรแกรมนี้เล่นๆ
  • และคำถามสำคัญที่สุด ถ้าใช้วิธีนี้จริง ปัญหาที่ถามตั้งแต่ต้น entry (เลือกคณะเดิมเปลี่ยนอันดับโอกาสจะลดลง) จะไม่เกิดขึ้นจริงมั๊ย?

.

.

edit อีกที

หรือจะเป็นวิธีนี้ ง่ายกว่าเยอะเลย เส้นผมบังภูเขาจริงๆ

  • จัดกลุ่มและจัดอันดับของทุกคณะไว้ก่อนเลย
  • ไล่ดูทีละคน ว่าใครติดเกิน 1 คณะ ให้เหลือชื่อไว้เฉพาะอันดับที่สูงที่สุด คณะอื่นดึงชื่อทิ้ง
  • ทำจนครบทุกคนก็จะได้รายชื่อแล้ว ไม่ต้อง recursive ให้วุ่นวาย ค่า Big-O ก็ไม่สูงด้วย
(credit : วิธีนี้บอกมาโดย nerd นะครับ)

เอ้อ รู้สึกว่าตัวเองโง่ขึ้นมากระทันหัน...

.

ปล. edit ไปๆ มาๆ entry นี้เปลี่ยนจากเรื่อง admission เป็นเรื่อง programming ไปซะแล้ว 55*

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

งงด้วยคนหวะ

ตรูผ่านมาได้ไงเนี่ยsad smile

#1 By Lancaster on 2008-04-12 02:23

algorithm แรกน่าจะถูกแล้วครับ

ทำมาหลายปีแล้ว ผมไม่คิดว่าจะมีข้อผิดพลาดหรือเปลี่ยนแปลงในเรื่องนี้

#2 By อัจฉริยะโง่ on 2008-04-12 02:28

ที่คิดว่าอัลกอริทึมแรกมันแปลกๆ คือแต่ละคณะใช้คนละเกณฑ์ในการคิดคะแนน คะแนนจะออกมาแตกต่างกันตามคณะ แล้วจะเอามาเรียงยังไงหว่า - -'

#3 By Lancaster on 2008-04-12 02:35

แบบแรกครับช้วร์ครับ

คณะเดียวกันคะแนน 3,000 ติด แต่ 7,000 ไม่ติด ไม่มีทางเป็นไปได้แน่ๆ ลองคิดง่ายๆวันประกาศผลคะแนนตัวเองสูงกว่าคะแนนต่ำสุดแต่ไม่ติด คงไม่มีใครยอมแน่ๆครับ (ถ้าเป็นแบบนี้จริงคนคงโวยไปนานแล้ว)

แหล่งอ้างอิง.....จากประสบการณ์ครับ เหอๆ
แต่ถ้าจะเอาแบบของจริงที่เป็นลายลักษ์อักษรจำได้ว่าในเว็บบอร์ดของ สกอ. เคยมีเจ้าหน้าที่มาตอบ (คำถามนี้เป็นคำถามยอดฮิต ถามเรื่องวิธีแปลกๆแบบนี้ทุกปี sad smile )

#4 By SRP on 2008-04-12 02:36

edit

algo แรก ไม่น่าจะถูกครับ แต่ผลที่เราเข้าใจ คงจะเหมือนกับทุกๆไป งงมะ embarrassed

#5 By อัจฉริยะโง่ on 2008-04-12 02:44

อัลกอแรกใช้ไม่ได้ครับ เนื่องจากแต่ละคณะมี % คิดต่างกันไป

ที่ถูกก็คือที่ edit ครั้งสุดท้ายแหละ

ขอบคุณ อัจฉริยะโง่ ที่ช่วยชี้ทาง confused smile

#6 By Lancaster on 2008-04-12 02:48

แต่ผมจะไม่เอาวิธีเก่าๆ ออกนะครับ เป็นซากแห่งความไม่ฉลาดไว้ดูเล่นในอนาคต sad smile

#7 By ch_a_m_p on 2008-04-12 02:49

อ่า

ขอบคุณที่ช่วยแปลเป็นภาษาคนได้

ส่วนตัวยังคิดว่าน่าจะมีวิธีที่ดี(สวย)กว่านี้ เดี๋ยวลองคิดต่อดูครับ

confused smile

#8 By อัจฉริยะโง่ on 2008-04-12 02:54

เอิก เมื่อกี้ไม่ได้เน้นดูตรงอัลกอฯ

ตรงส่วนอัลกอฯขอผ่าน เพราะไม่ถนัดสุดๆ แต่ผลที่ออกมาจะเป็นอย่างที่ว่าครับ

#9 By SRP on 2008-04-12 02:57

nerd ถ้าคิดออกก็ลงไว้ที่คอมเมนต์เลยนะครับ ไหนๆ ก็เลยมาคุยเรื่องอัลกอขนาดนี้แล้ว

สำหรับน้องๆ ที่จะเลือกคณะ แล้วเข้ามาอ่าน แล้วงง ก็งงกันต่อไป question

อ้อ เอนทรีนี้ไม่มีข้อสรุปนะครับว่าจริงๆ แล้ว สกอ. ใช้วิธีไหนกันแน่ เราก็ไม่รู้เหมือนกัน!

#10 By ch_a_m_p on 2008-04-12 03:26

55+พอเกทครับ
ผมแอดมิชชั่นปีนี้แต่ผมไม่ค่อยสนใจลำดับเท่าไหร่ เพราะไงผมก็เลือกที่ชอบๆไว้อันดับ1อยู่แล้ว

ไม่ว่าสกอ.ใช้วิธีไหน
ผมก็ไม่สน55+

#11 By [veho on 2008-04-12 14:48

สุดยอดอ่ะ
ปีหน้าก็ถึงคิวเราแล้วสินะ
ที่จริงสกอ.น่าจะเปิดวิธีการคัดเลือกนะ
จะได้ดูโปร่งใสขึ้นหน่อยopen-mounthed smile

#12 By iM * SEsai on 2008-04-12 14:53

วิธีที่ผมคิดไว้ว่าน่าจะใช้แต่แรกก็คล้ายๆกับวิธีสุดท้ายครับ น่าจะเรียงไว้ก่อนแล้วค่อยๆตัดคนที่ติดคณะบนๆทิ้งไปbig smile

สุขสันต์วันสงกรานต์ครับ ชุ่มฉ่ำๆ ขันน้ำ ปืนฉีดน้ำ ขันน้ำ ปืนฉีดน้ำ ขันน้ำ ปืนฉีดน้ำ confused smile

#13 By SkyKiD on 2008-04-12 15:40

ยุ่งยากจังดีแล้วที่แก่ = ="

ร้อนๆสาดน้ำใส่แชมปี้ขันน้ำ ดอกมะลิ

#14 By Rhen on 2008-04-12 16:02

แย่จัง ลืมสาดน้ำ สุขสันต์สงกรานครับผม
ขันน้ำ ขันน้ำ ขันน้ำ ขันน้ำ ขันน้ำ

#15 By [veho on 2008-04-12 16:27

ดอกมะลิ ขันน้ำ ขันน้ำ มาสาดมั่ง~~
ปีนี้ขอให้หยดน้ำเต็มบลอคเลยนะคะ~~(เกี่ยวมั้ย? 555+)

ขอให้มีความสุขนะคะ^^
เล่นน้ำปลอดภัยนะคะcry

#16 By YOSHINAKIs on 2008-04-12 17:21

อ่านแล้วงงดีแท้ ...
สาดน้ำดีกว่า question
ขันน้ำ ขันน้ำ ขันน้ำ
อืม
ผมก็เคยลองคิดดูเล่นๆนะ

ไม่ค่อยมีความรู้ด้านนี้หรอกครับ

เอาคนที่เลือกคณะนั้นๆ ไว้อันดับ 1
ไปใส่ในคณะนั้น
แล้วเรียงคะแนนจากสูงไปต่ำ
เลือกไว้ตามจำนวนที่รับได้ก่อน..

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

เสร็จแล้วก็เอาคนที่ยังไม่ติดที่ไหนเลยมาพิจารณาอันดับ 3 ด้วยวิธีการเช่นเดิม
ก็จะมีคนที่ถูกเบียดลงมาจากอันดับ 2 ของตนมาเข้าร่วมด้วย

พอทำถึงอันดับ 4 ถ้าใครยังถูกเบียดลงมาก็ไม่มีที่เรียนล่ะ

แต่วิธีของคุณ nerd น่าจะง่ายกว่ากันเยอะครับ
55+

#18 By เซฟ on 2008-04-19 19:37