- Katılım
- 21 May 2023
- Mesajlar
- 753
- Tepki
- 17
- Puan
- 18
Algoritma örneği denince akla genelde sıralama ya da yol bulma geliyor. Oysa her gün kullandığınız internet, tanımlı algoritmalarla çalışıyor: bir adres çözülürken, bir sayfa önbellekten sunulurken ya da bir veri şifrelenirken.
Aşağıda standart belgelerde açıkça tanımlanmış dört algoritma örneğini, her birinin hangi problemi çözdüğünü ve ortak yanlarının ne olduğunu kaynaklarına bakarak topluyoruz.
Örnek 1: Alan adı ilişkisini sınamak
RFC 1034, alan adı sisteminin kurucu belgesi, iki adın ilişkisini belirlemek için tek adımlık bir yordam tanımlıyor.
Kural şu: bir alanın diğerinin alt alanı olup olmadığı, adının kapsayan alanın adıyla bitip bitmediğine bakılarak sınanıyor.
Belgedeki örnek dört basamaklı bir ad üzerinden veriliyor: böyle bir ad, kendisini kapsayan her üst basamağın ve en tepedeki kökün altında sayılıyor.
Bu, bir algoritmanın en yalın hâli sayılabilir: girdi olarak iki ad alınıyor, çıktı olarak evet ya da hayır üretiliyor ve adım sayısı baştan sonlu.
- Problem: İki ad arasındaki hiyerarşik ilişki.
- Yordam: Sondan eşleşme sınaması.
- Çıktı: Alt alan mı, değil mi.
Örnek 2: Saklanan yanıtı geçersiz kılmak
RFC 9111, önbelleklerin ne zaman temizlik yapacağını koşullara bağlıyor.
Yordam adım adım tanımlı. Durumu değiştirebilen bir yöntemle gelen istek başarıyla sonuçlandıysa, yani yanıtın kodu 2xx ya da 3xx aralığındaysa, önbellek o adres için sakladığı yanıtı geçersiz saymak zorunda.
Bir de koruma koşulu var: geçersiz kılınacak adresin kökeni hedef adresin kökeninden farklıysa işlem tetiklenmiyor.
Burada algoritmanın girdisi bir istek ve yanıt, çıktısı ise bir eylem kararı. Koşullar açıkça yazıldığı için farklı uygulamalar aynı sonucu üretiyor.
Püf nokta' Alıntı:Standartlardaki algoritmalar hız için değil, farklı uygulamaların aynı sonucu vermesi için yazılıyor.
Örnek 3: Harf kaydırmalı şifreleme
RFC 4949, tarihsel bir şifreleme yordamını matematiksel olarak tanımlıyor: N karakterlik bir alfabede her açık metin karakteri, K basamak ileri kaydırılarak değiştiriliyor ve alfabenin sonunda başa dönülüyor.
Sözlük tarihsel örneği de veriyor: Julius Caesar bu yöntemi K değeri 3 ile kullanmış.
Bu örnek, algoritmanın anahtarla ilişkisini gösteriyor. Yordam sabit, sonucu belirleyen ise K değeri.
Aynı sözlük, algoritmayı da problem çözme veya hesaplama yordamı için sonlu ve adım adım talimatlar kümesi olarak tanımlıyor; bu tanım yukarıdaki üç örneğin hepsine uyuyor.
Örnek 4: Blok blok dönüştürmek
FIPS 197, modern bir şifreleme algoritmasını parametreleriyle tanımlıyor: simetrik bir blok şifresi olan AES, veriyi 128 bitlik bloklar hâlinde işliyor.
Anahtar seçenekleri de belirli: 128, 192 ve 256 bit. Standart üç örneği AES-128, AES-192 ve AES-256 olarak adlandırıyor.
Buradaki fark ölçekte. Üçüncü örnekte anahtar tek bir sayıydı; burada anahtar yüzlerce bitlik bir değer ve olasılık sayısı denenemeyecek kadar büyük.
Neden bu kadar kesin yazılıyor?
Standart belgelerdeki yordamlar, okuyucuya fikir vermek için değil uygulanmak için yazılıyor. Bir tarayıcıyı yazan ekiple sunucuyu yazan ekip birbirini tanımıyor; ortak zemin yalnız metin.
Bu yüzden metinlerde "genellikle" ya da "uygun görüldüğü şekilde" gibi ifadeler yerine koşullar ve zorunluluklar kullanılıyor. Hangi durumda ne yapılacağı, istisnalarıyla birlikte yazılıyor.
Sonuç, günlük hayatta fark edilmeyen bir uyum: farklı ülkelerde, farklı dillerde, farklı yıllarda yazılmış yazılımlar aynı adresi aynı biçimde çözüyor, aynı yanıtı aynı koşulda geçersiz sayıyor.
Ortak yanları ne?
Dört örneğin de girdisi, adımları ve çıktısı tanımlı. Hiçbirinde "duruma göre" bırakılan bir yer yok; belirsizlik olsaydı farklı uygulamalar farklı sonuç verirdi.
İkinci ortak yan sonluluk: her yordam belirli sayıda adımda bitiyor.
Üçüncüsü tekrarlanabilirlik. Aynı girdi aynı çıktıyı veriyor; bu yüzden bir tarayıcı ile bir sunucu, ayrı ekiplerce yazılmış olsalar bile anlaşabiliyor.
Kavramın tanımını algoritma yazımızda ele almıştık. Adım adım yordamların koda dönüşmesini Python yazımızda, veriyi sorgulama tarafını ise SQL yazımızda anlatmıştık.
Sık Sorulan Sorular
Algoritma örnekleri neler?
Alan adı ilişkisinin sınanması, önbellek geçersiz kılma kuralı, harf kaydırmalı şifre ve blok şifreleme standartlarda tanımlı örnekler.
Standartlarda neden algoritma yazılıyor?
Farklı uygulamaların aynı girdide aynı sonucu üretmesi için.
Bir yordamı algoritma yapan ne?
Sonlu olması, adımlarının belirli olması ve tekrarlanabilir sonuç vermesi.
Şifreleme algoritmaları da aynı mı?
Aynı tanıma giriyor; farkı, sonucun bir anahtara bağlı olması.
Karmaşıklık burada rol oynuyor mu?
Bu örneklerde amaç hız değil kesinlik; karmaşıklık ayrı bir değerlendirme ölçütü.
Özetle
Algoritma örneklerini uzakta aramaya gerek yok: adres çözümlemesinden önbellek kararına, tarihsel şifreden modern blok şifresine kadar hepsi standart belgelerde adım adım tanımlı. Ortak yanları girdinin, adımların ve çıktının belirli olması. Bu kesinlik olmasaydı farklı üreticilerin yazdığı yazılımlar birbiriyle konuşamazdı.
Kendi sisteminizde "duruma göre" çalışan hangi adım var?
Güncelleme: 3 Eylül 2026. RFC 1034, RFC 9111, RFC 4949 ve FIPS 197 kontrol edildi.
Dijital Dünyanıza Yön Veren Pusula