0Pricing
Competitive Programming Academy · บทเรียน

สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้

หาตัวอย่างโต้แย้งก่อนจะเชื่อถือวิธีนี้

สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้ เป็นบทเรียน Competitive Programming Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Competitive Programming Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน

วิธีโลภชวนให้ใช้

วิธีโลภสั้น รวดเร็ว และดูเหมือนชัดเจน ซึ่งนั่นเองคือเหตุผลที่มันอาจ หลอกติดกับ คุณได้ แนวคิดที่ดูสะอาดไม่ได้แปลว่าถูกต้องเสมอไป ⚠️

กับดักการทอนเหรียญ

เมื่อมีเหรียญ 1, 3 และ 4 การทำเงิน 6 ด้วยวิธีโลภจะเลือก 4 ก่อน จากนั้นต้องใช้เหรียญ 1 อีกสองเหรียญ รวมเป็น สาม เหรียญ คำตอบที่ดีที่สุดจริง ๆ คือใช้เหรียญ 3 สองเหรียญ

เกิดอะไรขึ้น

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

ค้นหาตัวอย่างโต้แย้ง

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

ปัญหากระเป๋าเป้แบบ 0/1 อีกครั้ง

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

เมื่อทางเลือกส่งผลต่อกัน

หากการเลือกสิ่งของหนึ่งชิ้นเปลี่ยนว่าสิ่งของชิ้นอื่นยัง คุ้มค่า ที่จะเลือกหรือไม่ วิธีโลภมักใช้ไม่ได้ ความสัมพันธ์ที่ยุ่งยากระหว่างทางเลือกชี้ให้คุณใช้ DP

ทดสอบด้วยกรณีจำนวนมาก

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

for _ in range(10000):
    t = random_case()
    assert greedy(t) == brute(t)

การทดสอบด้วยการสับเปลี่ยน

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

วิธีโลภในฐานะองค์ประกอบย่อย

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

อ่านข้อจำกัด

ค่า N ขนาดเล็กมักหมายความว่าคุณไม่จำเป็นต้องใช้วิธีโลภเลย การค้นหาครบทุกกรณีหรือ DP อาจผ่านได้ และช่วยหลีกเลี่ยงความเสี่ยงด้านความถูกต้องทั้งหมด

นิสัยที่ช่วยรักษาคะแนน

ก่อนส่งคำตอบที่เดาด้วยวิธีโลภ ใช้เวลาสักหนึ่งนาทีค้นหา ตัวอย่างโต้แย้ง การตรวจสอบเล็ก ๆ นี้ช่วยป้องกันผลตัดสินว่าคำตอบผิดที่น่าเจ็บใจได้

ตรวจสอบอย่างรวดเร็ว

คุณสงสัยว่ากลยุทธ์แบบโลภอาจไม่ถูกต้อง

สรุป

วิธีโลภใช้ไม่ได้เมื่อชัยชนะ เฉพาะหน้า ขัดขวางคำตอบที่ดีที่สุดโดยรวม เช่น ในชุดเหรียญบางชุดและปัญหากระเป๋าเป้แบบ 0/1 ค้นหาตัวอย่างโต้แย้งและทดสอบด้วยกรณีจำนวนมากก่อนเชื่อถือวิธีนี้ 🚀

คำถามที่พบบ่อย

บทเรียน “สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Competitive Programming Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Competitive Programming Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้”

หาตัวอย่างโต้แย้งก่อนจะเชื่อถือวิธีนี้ คุณปฏิบัติ Competitive Programming Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Competitive Programming Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Competitive Programming Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Competitive Programming Academy นี้ได้ไหม

ได้ บทเรียน Competitive Programming Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนวคิดแบบโลภ
  2. การเลือกกิจกรรมตามเวลาสิ้นสุดที่เร็วที่สุด
  3. กระเป๋าแบบแบ่งส่วนตามอัตราส่วน
  4. สังเกตว่าเมื่อใดวิธีโลภใช้ไม่ได้
← กลับไปที่ Competitive Programming Academy