Akademik anlamda, Ağaç ve Grafik veri yapısı arasındaki temel fark nedir? Peki ya ağaç tabanlı arama ve Grafik tabanlı arama?
Akademik anlamda, Ağaç ve Grafik veri yapısı arasındaki temel fark nedir? Peki ya ağaç tabanlı arama ve Grafik tabanlı arama?
Yanıtlar:
Bir Ağaç, sadece Grafiğin sınırlı bir şeklidir.
Ağaçların yönü vardır (ebeveyn / çocuk ilişkileri) ve döngü içermez. Yönlendirilmiş Asiklik Grafikler kategorisine (veya bir DAG) uyarlar. Yani Ağaçlar bir çocuğun sadece bir ebeveyne sahip olabileceği kısıtlaması olan DAG'lardır.
Belirtilmesi gereken önemli bir nokta, Ağaçlar özyinelemeli bir veri yapısı değildir. Yukarıdaki kısıtlamalar nedeniyle özyinelemeli bir veri yapısı olarak uygulanamazlar. Ancak, genellikle özyinelemesiz olan herhangi bir DAG uygulaması da kullanılabilir. Tercih ettiğim Ağaç uygulaması, merkezi bir harita gösterimidir ve özyinelemesizdir.
Grafikler genellikle önce genişlik veya önce derinlik olarak aranır. Aynısı Ağaç için de geçerlidir.
Açıklamak yerine resimlerde göstermeyi tercih ederim.
Gerçek zamanlı bir ağaç
Gerçek hayatta kullanımda bir grafik
Evet bir harita grafik veri yapısı olarak görselleştirilebilir.
Onları böyle görmek hayatı kolaylaştırır. Ağaçlar, her düğümün sadece bir ebeveyni olduğunu bildiğimiz yerlerde kullanılır. Ancak grafikler birden çok öncekine sahip olabilir (üst terim genellikle grafikler için kullanılmaz).
Gerçek dünyada, grafikleri kullanarak neredeyse her şeyi temsil edebilirsiniz. Mesela bir harita kullandım. Her şehri bir düğüm olarak görürseniz, şehre birden fazla noktadan ulaşılabilir. Bu düğüme giden noktalara selefler denir ve bu düğümün yol açacağı noktalara ardıl denir.
elektrik devre şeması, bir evin planı, bilgisayar ağı veya nehir sistemi, grafiklere birkaç örnektir. Birçok gerçek dünya örneği grafik olarak kabul edilebilir.
Teknik şema böyle olabilir
Ağaç:
Grafik:
Aşağıdaki bağlantılara başvurduğunuzdan emin olun. Bunlar, ağaçlar ve grafikler hakkındaki hemen hemen tüm sorularınıza cevap verecektir.
Referanslar :
Diğer cevaplar faydalıdır, ancak her birinin özelliklerini kaçırırlar:
Yönlendirilmemiş grafik, resim kaynağı: Wikipedia
Yönlendirilmiş grafik, görüntü kaynağı: Wikipedia
Yönlendirilmiş veya (grafikte, tüm kenarları için de geçerli olacak olan) yönlendirilmeyen olabilir
uyarınca Wikipedia :
Örneğin, köşeler bir partideki insanları temsil ediyorsa ve iki kişi arasında el sıkışmaları durumunda bir kenar varsa, bu grafik yönlendirilmez çünkü A herhangi bir kişi B kişisini sadece B ile A el sıkıştığında el sıkışabilir. Aksine, A kişisinden B kişisine herhangi bir kenar A hayranı B'ye karşılık gelirse, bu grafik yönlendirilir, çünkü hayranlık zorunlu olarak karşılık verilmez.
Yukarıdaki özelliklerde bir miktar örtüşme vardır. Özellikle, son iki özellik özelliklerin geri kalanı tarafından ima edilir. Ama yine de hepsi kayda değer.
Ağaçta, her bir düğümün (kök düğüm hariç) tam olarak bir önceki düğüm ve bir veya iki ardıl düğüm vardır. Sırayla, Ön Sipariş, Son Sipariş ve Önce Genişlik geçişleri kullanılarak gezilebilir. Ağaç, DAG (Yönlendirilmiş Asiklik Grafik) olarak bilinen, döngüsü olmayan özel bir grafik türüdür. Ağaç hiyerarşik bir modeldir.
Grafikte, her bir düğümün bir veya daha fazla öncülü ve ardıl düğümü vardır. Grafik Derinlik İlk Arama (DFS) ve Genişlik İlk Arama (BFS) algoritmaları kullanılarak gezilir. Grafiğin döngüsü vardır, bu yüzden ağaçtan daha karmaşıktır. Grafik bir ağ modelidir. İki tür grafik vardır: yönlendirilmiş grafikler ve yönlendirilmemiş grafikler.
Ağaçlar açıktır: Çocuklu düğümlerden oluşan özyinelemeli veri yapılarıdır.
Harita (sözlük olarak da bilinir) anahtar / değer çiftleridir. Bir haritaya bir anahtar verin ve ilgili değeri döndürecektir.
Haritalar ağaçlar kullanılarak uygulanabilir, umarım kafa karıştırıcı bulamazsınız.
GÜNCELLEME: "Harita" için kafa karıştırıcı "grafik" çok kafa karıştırıcıdır.
Grafikler ağaçlardan daha karmaşıktır. Ağaçlar özyinelemeli ebeveyn / çocuk ilişkilerini ima eder. Bir ağacı hareket ettirmenin doğal yolları vardır: önce derinlik, önce genişlik, seviye düzeni vb.
Grafikler düğümler arasında tek yönlü veya çift yönlü yollara sahip olabilir, döngüsel veya asiklik olabilir, vb. Grafiklerin daha karmaşık olduğunu düşünürdüm.
Ben herhangi bir iyi veri yapıları metin (örneğin "Algoritmalar Tasarım Kılavuzu") bir cursory arama herhangi bir sayıda SO cevap daha fazla ve daha iyi bilgi verecektir düşünüyorum. Pasif rotayı kullanmamanızı ve kendiniz için biraz araştırma yapmaya başlamanızı tavsiye ederim.
Ağaç özel bir grafik biçimidir, yani minimal bağlı grafiktir ve herhangi iki köşe arasında sadece bir yol vardır.
Grafikte birden fazla yol olabilir, yani grafik düğümler arasında tek yönlü veya çift yönlü yollara (kenarlar) sahip olabilir
Ayrıca daha fazla ayrıntı görebilirsiniz: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
Matematikte grafik, bazı nesne çiftlerinin bağlantılar ile bağlandığı bir nesne kümesinin temsilidir. Birbirine bağlı nesneler, köşeler adı verilen matematiksel soyutlamalar ile temsil edilir ve bazı köşe çiftlerini birleştiren bağlantılara kenar denir. [1] Tipik olarak, bir grafik, kenarlar için çizgiler veya eğrilerle birleştirilen, köşeler için bir noktalar kümesi olarak diyagramatik biçimde gösterilir. Grafikler, ayrık matematikteki çalışma nesnelerinden biridir.
ağaçta bir kök düğüm ve bir çocuk için sadece bir ebeveyn. Bununla birlikte, kök düğüm kavramı yoktur. Diğer bir fark, ağaç hiyerarşik modeldir, ancak grafik ağ modelidir.
Bir ağaç digrafidir, öyle ki:
a) kenar yönleri çıkarılmış, bağlı ve asiklik
- Döngüsel olmadığı varsayımını kaldırabilirsiniz.
- Sonluysa, alternatif olarak bağlı olduğu varsayımını kaldırabilirsiniz.
b) biri, kök, her köşe gerçekten var 1
c) Kökün derece 0 olması
- Yalnızca sonlu sayıda düğüm varsa, kökün 0 olduğu varsayımını veya kök dışındaki düğümlerin derece 1 olduğu varsayımını kaldırabilirsiniz.
Referans: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf
Ağaç temelde çevrim içermeyen yönlendirilmemiş bir grafiktir, bu nedenle ağacın daha kısıtlı bir grafik biçimi olduğunu söyleyebiliriz. Ancak ağaç ve grafik, programlamada çeşitli algoritmaları uygulamak için farklı uygulamalara sahiptir. Örneğin grafik model yol haritası için kullanılabilir ve ağaç herhangi bir hiyerarşik veri yapısını uygulamak için kullanılabilir.