Competitive Programming Academy · Pelajaran

Pangkas untuk Bertahan dalam Had Masa

Potong cabang yang tidak dapat memperbaik hasil.

Pelajaran 4 daripada 413 langkah

Pangkas untuk Bertahan dalam Had Masa ialah pelajaran Competitive Programming Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Competitive Programming Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Competitive Programming Academy merangkumi sejumlah 4 pelajaran.

Mengapa Pemangkasan Penting

Undur balik mentah boleh meneroka terlalu banyak cabang dan melepasi had masa. Pemangkasan memotong cabang yang tiada harapan lebih awal supaya anda kekal pantas. ✂️

Maksud Sebenar Pemangkasan

Pemangkasan bermaksud menghentikan cabang sebaik sahaja anda dapat membuktikan bahawa cabang itu tidak mungkin mencapai jawapan yang sah atau lebih baik. Anda tidak menerokainya langsung.

Pemangkasan Kebolehlaksanaan

Jika pilihan separa semasa sudah melanggar peraturan, kembali dengan serta-merta. Semakan kebolehlaksanaan ini mengelakkan pembinaan berdasarkan keadaan yang rosak.

if violates(cur):
    return

Pemangkasan Sempadan

Jejaki jawapan terbaik yang telah ditemui setakat ini. Jika hasil terbaik yang mungkin dicapai oleh sesuatu cabang masih lebih buruk, potong cabang itu. Inilah sempadan bagi cabang tersebut.

Pangkas dalam Kod

Di sini, sempadan menghentikan cabang apabila anggaran optimistik sekalipun tidak dapat mengatasi jawapan terbaik semasa.

if cur_cost + best_possible <= best:
    return

Susun Pilihan dengan Bijak

Mencuba pilihan yang paling menjanjikan dahulu menemukan jawapan yang baik dengan lebih cepat, lalu menaikkan sempadan dan memangkas lebih banyak cabang kemudian.

Penyebaran Kekangan

Selepas membuat pilihan, kecilkan perkara yang boleh dilakukan oleh langkah-langkah seterusnya. Membuang pilihan yang mustahil dari awal ialah penyebaran kekangan dan ia mengecilkan pokok.

Memecahkan Simetri

Jika dua cabang ialah imej cermin, terokai satu sahaja. Pemecahan simetri boleh mengurangkan kerja separuh atau lebih tanpa kehilangan jawapan.

Simpan Keadaan yang Bertindih

Jika keadaan separa yang sama berulang, simpan hasilnya. Penyimpanan hasil menukarkan subpokok berulang kepada satu carian pantas.

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

Pangkas Awal, Bukan Lewat

Semak syarat pemotongan sebelum melakukan rekursi, bukan selepasnya. Pemangkasan awal mengelakkan kerja sia-sia untuk mengembangkan cabang yang pasti gagal.

Anggar Sebelum Menjalankan

Sentiasa semak secara munasabah bilangan cabang kes terburuk berbanding kekangan. Jika terlalu besar, anda memerlukan pemangkasan yang lebih kuat atau pendekatan baharu.

Semak Pantas

Apakah tujuan pemangkasan dalam undur balik?

Ulang Kaji: Potong Cabang yang Buntu

Anda telah mempelajari cara memangkas dengan semakan kebolehlaksanaan dan sempadan, susunan yang bijak, pemecahan simetri serta penyimpanan hasil untuk mematuhi had masa. 🎯

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Pangkas untuk Bertahan dalam Had Masa” percuma?

Ya — teks penuh “Pangkas untuk Bertahan dalam Had Masa” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Competitive Programming Academy, tingkat taraf kepada CoddyKit PRO. Kursus Competitive Programming Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pangkas untuk Bertahan dalam Had Masa”?

Potong cabang yang tidak dapat memperbaik hasil. Anda berlatih Competitive Programming Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Competitive Programming Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Competitive Programming Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Pangkas untuk Bertahan dalam Had Masa” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Competitive Programming Academy ini?

Ya. Setiap pelajaran Competitive Programming Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Berfikir Secara Rekursif: Asas dan Rekursi
  2. Jana Semua Subset
  3. Permutasi dan Idea N-Queens
  4. Pangkas untuk Bertahan dalam Had Masa
← Kembali ke Competitive Programming Academy