Mit Beschneiden das Zeitlimit einhalten
Schneiden Sie Zweige ab, die keine Verbesserung bringen können
Mit Beschneiden das Zeitlimit einhalten ist eine kostenlose Competitive Programming Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Competitive Programming Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Pruning wichtig ist
Unverändertes Backtracking kann viel zu viele Zweige untersuchen und das Zeitlimit überschreiten. Pruning schneidet aussichtslose Zweige früh ab, damit Ihr Programm schnell bleibt. ✂️
Was Pruning wirklich bedeutet
Pruning bedeutet, einen Zweig in dem Moment zu beenden, in dem Sie beweisen können, dass er keine gültige oder bessere Lösung erreichen kann. Sie überspringen seine vollständige Untersuchung.
Pruning nach Machbarkeit
Wenn die aktuelle Teilauswahl bereits eine Regel verletzt, kehren Sie sofort zurück. Diese Machbarkeitsprüfung verhindert, dass Sie auf einem ungültigen Zustand aufbauen.
if violates(cur):
returnPruning mit Schranken
Verfolgen Sie die bisher beste gefundene Lösung. Wenn das bestmögliche Ergebnis eines Zweigs schlechter wäre, schneiden Sie ihn ab. Das ist eine Schranke für den Zweig.
Pruning im Code
Hier beendet eine Schranke den Zweig, wenn selbst die optimistische Schätzung die aktuelle beste Lösung nicht übertreffen kann.
if cur_cost + best_possible <= best:
returnOptionen sinnvoll anordnen
Wenn Sie zuerst die aussichtsreichste Option ausprobieren, finden Sie früher eine gute Lösung. Dadurch steigt die Schranke, und später können mehr Zweige abgeschnitten werden.
Constraint Propagation
Schränken Sie nach einer Auswahl ein, was spätere Schritte noch tun können. Das frühzeitige Entfernen unmöglicher Optionen heißt Constraint Propagation und verkleinert den Baum.
Symmetrien aufbrechen
Wenn zwei Zweige Spiegelbilder voneinander sind, untersuchen Sie nur einen. Symmetry Breaking kann die Arbeit halbieren oder noch stärker reduzieren, ohne Lösungen zu verlieren.
Überlappende Zustände memoization-basiert speichern
Wenn derselbe Teilzustand erneut auftritt, speichern Sie sein Ergebnis zwischen. Memoisierung macht aus wiederholten Teilbäumen eine einzige schnelle Abfrage.
from functools import lru_cache
@lru_cache(maxsize=None)
def solve(state):
...Früh statt spät abschneiden
Prüfen Sie die Abbruchbedingung vor dem rekursiven Aufruf, nicht danach. Frühes Pruning vermeidet die vergeudete Arbeit, einen aussichtslosen Zweig zu erweitern.
Vor dem Ausführen schätzen
Prüfen Sie stets grob die Anzahl der Zweige im Worst Case anhand der Einschränkungen. Ist sie zu groß, benötigen Sie stärkeres Pruning oder einen neuen Ansatz.
Kurze Überprüfung
Was ist das Ziel von Pruning beim Backtracking?
Zusammenfassung: Aussichtlose Zweige abschneiden
Sie haben gelernt, mit Machbarkeits- und Schrankenprüfungen, einer sinnvollen Reihenfolge, Symmetry Breaking und Memoisierung Pruning einzusetzen, um das Zeitlimit einzuhalten. 🎯
Lerne Python mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Mit Beschneiden das Zeitlimit einhalten“ kostenlos?
Ja — der vollständige Text von „Mit Beschneiden das Zeitlimit einhalten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Competitive Programming Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Mit Beschneiden das Zeitlimit einhalten“?
Schneiden Sie Zweige ab, die keine Verbesserung bringen können Du übst Competitive Programming Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Competitive Programming Academy zu starten?
Keine Vorkenntnisse erforderlich. Competitive Programming Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Mit Beschneiden das Zeitlimit einhalten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Competitive Programming Academy-Lektion Code schreiben und ausführen?
Ja. Jede Competitive Programming Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Rekursiv denken: Basisfall und Rekursion
- Alle Teilmengen erzeugen
- Permutationen und die N-Queens-Idee
- Mit Beschneiden das Zeitlimit einhalten