İkili karar diyagramı - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Tanım
    • 1.1 Örnek
    • 1.2 Terslenmiş kenarlar
  • 2 Kaynakça

İkili karar diyagramı

  • Català
  • Dansk
  • Deutsch
  • English
  • Español
  • Français
  • עברית
  • हिन्दी
  • 日本語
  • 한국어
  • Nederlands
  • Русский
  • Српски / srpski
  • Українська
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Wikimedia Commons
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi

Bilgisayar biliminde, ikili karar diyagramı (BDD) veya dallanma programı, bir veri yapısı olup Boolean fonksiyonunu temsil etmek için kullanılır. Daha soyut bir düzeyde, BDD’ler kümelerin veya ilişkilerin sıkıştırılmış bir gösterimi olarak düşünülebilir. Diğer sıkıştırılmış gösterimlerden farklı olarak, işlemler sıkıştırılmış hali üzerinde doğrudan, yani açılmadan gerçekleştirilir.

Benzer veri yapıları arasında negation normal form (NNF), Zhegalkin polinomları ve önerme yönlendirilmiş döngüsüz grafikler (PDAG) bulunur.

Tanım

[değiştir | kaynağı değiştir]

Bir Boolean fonksiyonu, köklü, yönlendirilmiş, döngüsüz bir graf olarak temsil edilebilir. Bu grafik, birkaç (karar) düğümü ve iki terminal düğümden oluşur. İki terminal düğüm 0 (FALSE) ve 1 (TRUE) olarak etiketlenir. Her (karar) düğümü u {\displaystyle u} {\displaystyle u}, bir Boolean değişkeni x i {\displaystyle x_{i}} {\displaystyle x_{i}} ile etiketlenir ve iki alt düğüme sahiptir; bunlar düşük alt düğüm (low child) ve yüksek alt düğüm (high child) olarak adlandırılır. Düğüm u {\displaystyle u} {\displaystyle u}'den düşük (veya yüksek) alt düğüme giden kenar, değişken x i {\displaystyle x_{i}} {\displaystyle x_{i}}'ye FALSE (veya sırasıyla TRUE) değeri atanmasını temsil eder. Böyle bir BDD, kökten tüm yollarda değişkenlerin aynı sırayla yer alması durumunda 'sıralı' (ordered) olarak adlandırılır. Bir BDD'nin 'azaltılmış' (reduced) olması için aşağıdaki iki kural uygulanmış olmalıdır:

  • İzomorfik alt grafikleri birleştir.
  • İki alt düğümü izomorfik olan herhangi bir düğümü kaldır.

Günlük kullanımda, BDD terimi neredeyse her zaman Azaltılmış Sıralı İkili Karar Diyagramı (literatürde ROBDD olarak anılır; sıralama ve azaltma özellikleri vurgulanmak istendiğinde kullanılır) anlamına gelir. ROBDD'nin avantajı, belirli bir fonksiyon ve değişken sırası için kanonik (izomorfizme kadar benzersiz) olmasıdır.[1] Bu özellik, fonksiyonel eşdeğerlik kontrolü ve fonksiyonel teknoloji eşlemesi gibi işlemlerde faydalıdır.

Kök düğümden 1-terminal düğüme olan bir yol, temsil edilen Boolean fonksiyonunun doğru olduğu (kısmi veya tam) bir değişken atamasını gösterir. Yol, bir düğümden düşük (veya yüksek) alt düğüme ilerledikçe, o düğümün değişkenine 0 (sırasıyla 1) değeri atanmış olur.

Örnek

[değiştir | kaynağı değiştir]

Aşağıdaki soldaki şekil, bir ikili karar ağacıdır (azaltma kuralları uygulanmamıştır) ve bir doğruluk tablosu, her ikisi de f ( x 1 , x 2 , x 3 ) {\displaystyle f(x_{1},x_{2},x_{3})} {\displaystyle f(x_{1},x_{2},x_{3})} fonksiyonunu temsil eder. Soldaki ağaçta, verilen bir değişken ataması için fonksiyonun değeri, grafikteki bir yol izlenerek terminal düğüme ulaşılmasıyla belirlenebilir. Aşağıdaki şekillerde, kesikli çizgiler düşük alt düğüme giden kenarları, düz çizgiler ise yüksek alt düğüme giden kenarları temsil eder. Bu nedenle, f ( 0 , 1 , 1 ) {\displaystyle f(0,1,1)} {\displaystyle f(0,1,1)} değerini bulmak için, x1'den başlayıp kesikli çizgiyle x2'ye (çünkü x1 değeri 0’dır), ardından iki düz çizgiyle (çünkü x2 ve x3 değerleri 1’dir) ilerlenir. Bu yol, f ( 0 , 1 , 1 ) {\displaystyle f(0,1,1)} {\displaystyle f(0,1,1)} değerini veren terminal 1’e ulaşır.

Soldaki ikili karar ağacı, iki azaltma kuralına göre mümkün olduğunca küçültülerek ikili karar diyagramına dönüştürülebilir. Ortaya çıkan BDD, sağdaki şekilde gösterilmiştir.

Fonksiyon f ( x 1 , x 2 , x 3 ) = ( ¬ x 1 ∧ ¬ x 2 ∧ ¬ x 3 ) ∨ ( x 1 ∧ x 2 ) ∨ ( x 2 ∧ x 3 ) {\displaystyle f(x_{1},x_{2},x_{3})=(\neg x_{1}\wedge \neg x_{2}\wedge \neg x_{3})\vee (x_{1}\wedge x_{2})\vee (x_{2}\wedge x_{3})} {\displaystyle f(x_{1},x_{2},x_{3})=(\neg x_{1}\wedge \neg x_{2}\wedge \neg x_{3})\vee (x_{1}\wedge x_{2})\vee (x_{2}\wedge x_{3})} için ikili karar ağacı ve doğruluk tablosu. Fonksiyon, Boolean operatörleri notasyonuyla ifade edilmiştir.
f fonksiyonu için BDD

Bu Boolean fonksiyonunu yazmak için diğer bir gösterim ise x ¯ 1 x ¯ 2 x ¯ 3 + x 1 x 2 + x 2 x 3 {\displaystyle {\overline {x}}_{1}{\overline {x}}_{2}{\overline {x}}_{3}+x_{1}x_{2}+x_{2}x_{3}} {\displaystyle {\overline {x}}_{1}{\overline {x}}_{2}{\overline {x}}_{3}+x_{1}x_{2}+x_{2}x_{3}} şeklindedir.

Terslenmiş kenarlar

[değiştir | kaynağı değiştir]
Terslenmiş kenarlar kullanılarak ikili karar diyagramının gösterimi

Bir ROBDD, terslenmiş kenarlar olarak da bilinen tamamlayıcı bağlantılar kullanılarak daha da kompakt şekilde temsil edilebilir[2] veya imzalı BDD olarak adlandırılır.

Terslenmiş kenarlar, düşük kenarların terslenmiş olup olmadığının belirtilmesiyle oluşturulur. Eğer bir kenar terslenmişse, bu kenar, kenarın işaret ettiği düğümün karşılık geldiği Boolean fonksiyonunun olumsuzuna (yani BDD'nin kökü o düğüm olan Boolean fonksiyonunun negasyonuna) işaret eder. Yüksek kenarlar terslenmez; böylece elde edilen BDD gösteriminin kanonik form olması sağlanır. Bu gösterimde, aşağıda açıklanan nedenlerle BDD'lerin tek bir yaprak düğümü vardır.

BDD’leri terslenmiş kenarlarla temsil etmenin iki avantajı vardır:

Bir BDD’nin negasyonunu hesaplamak sabit zamanda yapılabilir. Bellek kullanımı (yani gereken hafıza) en fazla iki kat daha azdır. Ancak, Knuth[3] bu görüşe katılmamaktadır:

Tüm büyük BDD paketleri bu tür bağlantıları kullansa da, bilgisayar programlarının çok daha karmaşık hale gelmesi nedeniyle önerilmesi zordur. Bellek tasarrufu genellikle ihmal edilebilir düzeydedir ve hiçbir zaman iki katından daha iyi değildir; ayrıca yazarın deneyleri çalışma süresinde çok az kazanç sağladığını göstermektedir.

Bu gösterimde bir BDD’ye yapılan referans, (muhtemelen terslenmiş) BDD köküne işaret eden bir "kenar"dır. Bu, terslenmiş kenarların kullanılmadığı gösterimde bir BDD’ye yapılan referansın BDD’nin kök düğümü olmasıyla tezat oluşturur. Bu gösterimde referansın bir kenar olması gerekir. Çünkü her Boolean fonksiyon için, fonksiyon ve onun negasyonu, aynı BDD’nin köküne giden bir kenar ve terslenmiş bir kenar ile temsil edilir. İşte bu yüzden negasyon sabit zamanda gerçekleşir. Ayrıca, tek bir yaprak düğümün yeterli olmasının sebebini de açıklar: FALSE, yaprak düğüme işaret eden terslenmiş bir kenar ile; TRUE ise yaprak düğüme işaret eden normal (terslenmemiş) bir kenar ile temsil edilir.

Örneğin, bir Boolean fonksiyonunun, terslenmiş kenarlarla temsil edilen bir BDD ile gösterildiğini varsayalım. Değişkenlere verilen (Boolean) değerler için fonksiyonun değerini bulmak üzere, BDD’nin köküne işaret eden referans kenarından başlanır ve verilen değişken değerlerine göre tanımlanan yol izlenir (bir düğümü etiketleyen değişken FALSE ise düşük kenar, TRUE ise yüksek kenar takip edilir) ve yaprak düğüme ulaşılır. Bu yol boyunca kaç tane terslenmiş kenar geçtiğimiz sayılır. Yaprak düğüme ulaşıldığında, eğer geçilen terslenmiş kenar sayısı tek ise, verilen değişken ataması için Boolean fonksiyonunun değeri FALSE olur; çift ise TRUE olur.

Bu gösterimdeki bir BDD örneği sağdaki şekilde verilmiştir ve yukarıdaki diyagramlarda gösterilen aynı Boolean ifadesini temsil eder (yani ( ¬ x 1 ∧ ¬ x 2 ∧ ¬ x 3 ) ∨ ( x 1 ∧ x 2 ) ∨ ( x 2 ∧ x 3 ) {\displaystyle (\neg x_{1}\wedge \neg x_{2}\wedge \neg x_{3})\vee (x_{1}\wedge x_{2})\vee (x_{2}\wedge x_{3})} {\displaystyle (\neg x_{1}\wedge \neg x_{2}\wedge \neg x_{3})\vee (x_{1}\wedge x_{2})\vee (x_{2}\wedge x_{3})}). Düşük kenarlar kesikli çizgilerle, yüksek kenarlar düz çizgilerle; terslenmiş kenarlar ise kaynaklarında bir daire ile gösterilmiştir. @ sembollü düğüm, BDD’ye referansı temsil eder; yani referans kenarı bu düğümden başlayan kenardır.

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ Bryant, Randal E. (August 1986). "Graph-Based Algorithms for Boolean Function Manipulation" (PDF). IEEE Transactions on Computers. C–35 (8): 677-691. CiteSeerX 10.1.1.476.2952 Özgürce erişilebilir. doi:10.1109/TC.1986.1676819. 28 Kasım 2024 tarihinde kaynağından arşivlendi (PDF)13 Haziran 2025. 
  2. ^ Brace, Karl S.; Rudell, Richard L.; Bryant, Randal E. (1990). "Efficient Implementation of a BDD Package". Proceedings of the 27th ACM/IEEE Design Automation Conference (DAC 1990). IEEE Computer Society Press. ss. 40-45. doi:10.1145/123186.123222. ISBN 978-0-89791-363-8. 
  3. ^ Knuth, D.E. (2009). Fascicle 1: Bitwise tricks & techniques; Binary Decision Diagrams. The Art of Computer Programming. 4. Addison–Wesley. ISBN 978-0-321-58050-4. 12 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Haziran 2025.  Draft of Fascicle 1b 2016-03-12 tarihinde Wayback Machine sitesinde arşivlendi. available for download
  • g
  • t
  • d
Veri yapıları
Türler
Kapsayıcı · Koleksiyon
Soyut
Liste · İlişkisel dizi · Çoklu harita · Küme · Çoklu küme · Çift uçlu kuyruk · Kuyruk · Öncelik kuyruğu · Yığın
Diziler
Dinamik dizi · Seyrek dizi · Dairesel arabellek · Bit dizisi · Komut çizelgesi
Bağlı
Bağlı liste · Açılmış bağlı liste · XOR bağlı liste · Atlama listesi
Ağaçlar
B-ağaç · Ağaç sıralaması (kendini dengeleyen: AA, AVL, kırmızı-siyah, şevli) · Öbek (ikili, binom, Fibonacci) · Önek ağacı
Çizgeler
Yönlendirilmiş çizge · Yönlendirilmiş asiklik çizge · İkili karar diyagramı · Hiperçizge
Veri yapıları listesi
  • g
  • t
  • d
Bilgisayar biliminin alt dalları
Matematiksel temeller
Matematiksel mantık · Kümeler kuramı · Sayı teorisi · Çizge teorisi · Tip teorisi · Kategori teorisi · Sayısal çözümleme · Bilgi teorisi · Kombinatorik · Boole cebiri
Hesaplama teorisi
Otomat teorisi · Hesaplanabilirlik teorisi · Hesaplamalı karmaşıklık teorisi · Kuantum hesaplama teorisi
Algoritmalar ve veri yapıları
Algoritma çözümlemesi · Algoritma tasarımı · Hesaplamalı geometri
Programlama dilleri ve derleyiciler
Ayrıştırıcılar · Yorumlayıcılar · Yordamsal programlama · Nesne yönelimli programlama · Fonksiyonel programlama · Mantık programlama · Programlama paradigmaları
Eşzamanlı, paralel ve dağıtık sistemler
Çoklu işleme · Dağıtımlı hesaplama · Eşzamanlılık denetimi
Yazılım mühendisliği
Gereksinim çözümleme · Yazılım tasarımı · Bilgisayar programlama · Biçimsel yöntemler · Yazılım testi · Yazılım geliştirme süreci
Sistem mimarisi
Bilgisayar mimarisi · Bilgisayar organizasyonu · İşletim sistemi
Telekomünikasyon ve ağ oluşturma
Bilgisayar müziği · Yönlendirme · Örgü topolojisi · Kriptografi
Veritabanları
Veritabanı yönetim sistemleri · İlişkisel veritabanı · SQL · İşlem yürütme · Veritabanı indeksleme · Veri madenciliği · Metadata (Üst veri) · Ana veri (Master data)
Yapay zekâ
Otomatikleştirilmiş muhakeme · Bilgisayarlı dilbilim · Bilgisayarlı görü · Evrimsel hesaplama · Uzman sistemler · Makine öğrenimi · Doğal dil işleme · Robotik
Bilgisayar grafikleri
Görselleştirme · Bilgisayar animasyonu · Görüntü işleme
İnsan-bilgisayar etkileşimi
Bilgisayar erişilebilirliği · Kullanıcı arayüzleri · Giyilebilir hesaplama · Yaygın bilişim · Sanal gerçeklik
Bilimsel hesaplama
Yapay yaşam · Biyoenformatik · Bilişsel bilim · Bilgisayarlı kimya · Hesaplamalı nörobilim · Hesaplamalı fizik · Sayısal algoritmalar · Sembolik matematik
Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir.
Otorite kontrolü Bunu Vikiveri'de düzenleyin
  • GND: 4530728-3
"https://tr.wikipedia.org/w/index.php?title=İkili_karar_diyagramı&oldid=35718364" sayfasından alınmıştır
Kategoriler:
  • Diyagramlar
  • Bilgisayar bilimi
  • Veri bilimi
Gizli kategoriler:
  • Webarşiv şablonu wayback bağlantıları
  • GND tanımlayıcısı olan Vikipedi maddeleri
  • Sayfa en son 08.09, 23 Temmuz 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
İkili karar diyagramı
Konu ekle