0Pricing
Competitive Programming Academy · Ders

Polinomsal Dize Hash'leme

Alt dizeleri sabit zamanda karşılaştırın.

Polinomsal Dize Hash'leme, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

Alt Dizeleri Hızlıca Karşılaştırma

Çoğu zaman iki alt dizenin eşit olup olmadığını sormanız gerekir. Karakter karakter karşılaştırmalar yavaştır; bu nedenle her dizeyi bir sayıya dönüştürürüz. 🔢

Karma Fikri

Bir karma, bir dizeyi tek bir tam sayıya dönüştürür. İki dize farklıysa karmaları da neredeyse her zaman farklı olur.

Dizeleri Polinom Olarak Ele Alın

Her karakteri p tabanındaki bir rakam olarak okuruz. Bu polinom bakışı, dizeyi büyük bir ağırlıklı toplama dönüştürür.

h = ord(s[0]) + ord(s[1]) * p + ord(s[2]) * p * p

Bir Taban ve Modül Seçin

31 gibi bir asal taban ve büyük bir asal modül seçin. Mod işlemi sayıları küçük tutar ve taşmayı önler.

BASE = 31
MOD = 10**9 + 9

Tek Bir Karma Hesaplama

Dizeyi dolaşın ve her karakteri Horner kuralıyla birleştirin; her adımda mod işlemi uygulayın.

h = 0
for c in s:
    h = (h * BASE + ord(c)) % MOD

Önek Karmaları

Her konum için bir önek karması saklayın. Ardından herhangi bir alt dize karmasını hızlı bir çıkarmayla elde edebilirsiniz.

pre[i + 1] = (pre[i] * BASE + ord(s[i])) % MOD

Tabanın Kuvvetleri

Ayrıca tabanın kuvvetlerini önceden hesaplayın. Çıkarma yaptığınızda iki öneki aynı ölçeğe getirirler.

pw[i] = (pw[i - 1] * BASE) % MOD

O(1) Sürede Alt Dize Karması

s[l..r] alt dizesinin karması, bir kuvvetle ölçeklendirilmiş iki önek karmasının çıkarılmasıdır. Sorgu başına sabit zaman.

def sub(l, r):
    return (pre[r] - pre[l] * pw[r - l]) % MOD

Çakışmalara dikkat edin

İki farklı dize aynı karma değerini paylaşabilir; buna çakışma denir. Bu durum nadirdir, ancak yarışmalarda bazen girdiler özellikle bunu tetikleyecek şekilde hazırlanır.

Güvenlik için çift karma

İki bağımsız modül kullanıp her iki karma değerini de karşılaştırın. İkisinde birden aynı anda çakışma olması pratikte imkânsızdır.

Karma işleminin öne çıktığı yerler

Karma işlemi alt dize karşılaştırmasını, tekrarları bulmayı ve desen aramayı mümkün kılar. Çok amaçlı, esnek bir araçtır.

Hızlı kontrol

Çok sayıda alt dizeyi güvenli biçimde karşılaştırmak için doğru aracı seçin.

Özet: Karma işleminin gücü

Artık dizeleri polinom karma değerlerine dönüştürebilir, herhangi bir alt dizeyi O(1) sürede sorgulayabilir ve çakışmalara karşı önlem alabilirsiniz. 🚀

Sıkça Sorulan Sorular

“Polinomsal Dize Hash'leme” dersi ücretsiz mi?

Evet — “Polinomsal Dize Hash'leme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.

“Polinomsal Dize Hash'leme” dersinde ne öğreneceğim?

Alt dizeleri sabit zamanda karşılaştırın. Competitive Programming Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Polinomsal Dize Hash'leme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Competitive Programming Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. KMP Önek İşlevi
  2. Polinomsal Dize Hash'leme
  3. Desen Araması için Z-İşlevi
  4. Önek Aramaları için Trie'ler
← Competitive Programming Academy Sayfasına Dön