0Pricing
Coding Interview Prep · บทเรียน

ตัดกิ่งเพื่อให้อยู่รอดในขีดจำกัดเวลา

ตัดกิ่งที่ไม่อาจปรับปรุงคำตอบได้

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

เหตุผลที่การตัดกิ่งสำคัญ

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

การตัดกิ่งคืออะไร

การตัดกิ่งหมายถึงการหยุดกิ่งทันทีที่พิสูจน์ได้ว่ากิ่งนั้นไม่สามารถนำไปสู่คำตอบที่ถูกต้องหรือดีกว่าได้ จากนั้นจะข้ามการสำรวจกิ่งนั้นทั้งหมด

การตัดกิ่งด้วยการตรวจสอบความเป็นไปได้

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

if violates(cur):
    return

การตัดกิ่งด้วยขอบเขต

ติดตามคำตอบที่ดีที่สุดที่พบจนถึงตอนนี้ หากคำตอบที่ดีที่สุดที่กิ่งหนึ่งอาจทำได้ยังแย่กว่า ก็ให้ตัดกิ่งนั้น นี่คือขอบเขตของกิ่ง

ตัดกิ่งในโค้ด

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

if cur_cost + best_possible <= best:
    return

จัดลำดับทางเลือกอย่างชาญฉลาด

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

การส่งต่อข้อจำกัด

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

การทำลายสมมาตร

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

จดจำสถานะที่ซ้ำกัน

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

from functools import lru_cache
@lru_cache(maxsize=None)
def solve(state):
    ...

ตัดกิ่งตั้งแต่ต้น ไม่ใช่ตอนท้าย

ตรวจสอบเงื่อนไขการตัดกิ่งก่อนการเรียกซ้ำ ไม่ใช่หลังจากนั้น การตัดกิ่งตั้งแต่ต้นช่วยหลีกเลี่ยงงานที่เสียไปกับการขยายกิ่งที่หมดหวัง

ประเมินก่อนเริ่มทำงาน

ตรวจสอบจำนวนกิ่งทั้งหมดในกรณีเลวร้ายที่สุดเทียบกับข้อจำกัดเสมอ หากจำนวนมากเกินไป ก็ต้องใช้การตัดกิ่งที่เข้มข้นขึ้นหรือเปลี่ยนแนวทางใหม่

ตรวจสอบความเข้าใจ

เป้าหมายของการตัดกิ่งในการย้อนกลับคืออะไร

สรุปทบทวน: ตัดกิ่งที่หมดหวัง

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

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

บทเรียน “ตัดกิ่งเพื่อให้อยู่รอดในขีดจำกัดเวลา” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัดกิ่งเพื่อให้อยู่รอดในขีดจำกัดเวลา”

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

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

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

บทเรียน “ตัดกิ่งเพื่อให้อยู่รอดในขีดจำกัดเวลา” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม

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

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

  1. คิดแบบเวียนเกิด: ฐานและการเรียกซ้ำ
  2. สร้างเซตย่อยทั้งหมด
  3. การเรียงสับเปลี่ยนและแนวคิด N-Queens
  4. ตัดกิ่งเพื่อให้อยู่รอดในขีดจำกัดเวลา
← กลับไปที่ Coding Interview Prep