4 puan yazan GN⁺ 2023-11-17 | 1 yorum | WhatsApp'ta paylaş

B-ağaçları hakkında öğrenme

  • İkili arama ağaçları (Binary Search Trees, BSTs): Her düğüm bir anahtara sahiptir; sol düğüm daha düşük anahtar değerlerine, sağ düğüm ise daha yüksek anahtar değerlerine sahiptir.

  • BST'ler yalnızca anahtarlar sıralanabildiğinde çalışır ve değerler sadece tek bir tarafa eklenirse denge bozulur, bu da verimliliği düşürür.

  • Dengesi bozulmuş bir BST, pivotlama yoluyla düzeltilebilir; ancak disk tabanlı depolama için uygun değildir (sık yeniden dengeleme gerekir ve bitişik düğümler farklı sayfalarda depolanabilir).

  • B-ağaçları (B-Trees): İkili ağaçlara göre daha fazla anahtar ve işaretçi içeren düğümlerden oluşur.

  • Her düğüm birden fazla anahtar taşır ve her anahtara göre birden fazla işaretçiye sahiptir (örneğin, anahtarları 17 ve 24 olan bir düğüm; 17'den küçük anahtarlara sahip düğümlere, 17 ile 24 arasındaki anahtarlara sahip düğümlere ve 24'ten büyük anahtarlara sahip düğümlere işaretçilere sahip olur).

Factorio'da B-ağacı uygulaması

  • Fabrika kurma oyunu Factorio'da basit bir ikili arama ağacı uygulaması: Her düğüm bir ahşap sandıktan (anahtar) ve iki yoldan (işaretçi) oluşur.
  • Malzemelerin değerini karşılaştırmanın bir yolu olmadığından, onlara keyfi bir sıra verilir ve karşılaştırma için filtre kolu kullanılır.
  • B-ağacı uygulaması daha karmaşıktır: Her düğüm üç anahtar ve dört çocuk düğüme giden işaretçi içerir.
  • B-ağaçları daha fazla bilgi depolayabilir ve öğeleri elle sıralamak yerine, daha sonra daha iyi bir gösterim yöntemi bulunana kadar ağaç boş bırakılır.

GN⁺ görüşü

  • Bu yazıdaki en önemli nokta, B-ağacı kavramını anlamak ve bunu Factorio oyununda uygulamayı deneyen yaratıcı yaklaşımdır.
  • Okurlar için ilginç olan, bilgisayar biliminin karmaşık veri yapılarını oyun aracılığıyla görsel ve sezgisel biçimde anlama fırsatı sunmasıdır.
  • Bu yaklaşım, öğrenmeyi daha eğlenceli ve çekici hale getirirken, yazılım mühendisliğinin temel kavramlarını oyun gibi alışılmadık bir araç üzerinden keşfetmenin yeni bir yolunu da önerir.

1 yorum

 
GN⁺ 2023-11-17
Hacker News yorumu
  • Factorio oyununun tasarımı bilgisayar bilimi teorisini kusursuz biçimde yansıtmaz; teorik olarak optimize edilmiş oyundan çok oyundan keyif almaya odaklanır.
  • Factorio’da kendini dengeleyen ikili ağaçlar (2-3 ağaçları, red-black ağaçlar, B-ağaçları) yeniden yapılandırılamaz; bu yüzden en önemli özellik olan kendini dengeleme özelliği eksiktir.
  • Optimizasyon açısından bakıldığında, Factorio’daki inserter’lar belt’lerden daha yavaştır; 4 inserter bir belt başına saniyede 12 öğe işlerken, blue belt saniyede 45 öğe taşıyabilir. Bu nedenle en iyi yalnızca-belt tasarımı için splitter kullanımı önerilir.
  • Bilgisayar bilimi ile splitter’ların birleşimi, Beneš ağı (yalnızca 2 girişli 2 çıkışlı crossbar’lardan oluşan bir ağ) kavramını içerir; verimli fabrika tasarımı için bunun incelenmesi gerekir.
  • Factorio’da karışık belt tasarımı önemlidir ve veritabanı iç yapıları üzerine bir kitap okumak faydalı olabilir.
  • İkili arama ağaçları (BST), disk tabanlı depolama için uygun değildir ve B-ağacı düğüm araması, ikili ağaç pointer dolaşımından daha hızlıdır. Uygulama karmaşıklığı artsa da, C dili kullanmıyorsanız ağaç tabanlı bir map yapısını kendiniz uygulamanız nadiren gerekir.
  • Büyük harf kullanımının olmamasının metni okumayı zorlaştırabileceği belirtiliyor.
  • Paylaşılan Factorio içeriğinin, oyuna yeniden yüzlerce saat yatırma isteğini tetiklediği ifade ediliyor.
  • Tüm işlemler yalnızca splitter’larla yapılabilir; chest ve filter inserter gerekli değildir.
  • Factorio’nun devreleri kullanılarak uygulanacağının beklendiği, ancak bunun böyle olmadığı belirtiliyor.