Ağaç ve Grafik veri yapısı arasındaki fark nedir?


139

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:


150

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.


8
Grafikler çok kullanışlıdır ve çok fazla şeyi modellemek için kullanılabilir. Diğer birçok veri yapısı kısıtlamalı bir grafik olarak görülebilir. Örneğin, tek bağlantılı bir liste bir DAG için özel bir durumdur.
JR Garcia

7
@ user785287 Merkezi harita gösterimi ile ne demek istiyorsun ?
Geek

36
"Ağaçlar özyinelemeli bir veri yapısı değildir" yanıltıcı ve yanlıştır. Bir ağaç , özyinelemesiz bir veri yapısı ile temsil edilebilir (örneğin bir kenar dizisi; ikili bir yığının altında yatan gibi tam bir ağaç, bir dizide çok kompakt olarak temsil edilebilir; başka özlü gösterimler vb.), ancak muhtemelen onları temsil etmenin en popüler ve kullanışlı yolu, yinelemeli işaretçi tabanlı bir yapı kullanmaktır. Temsil, köklenmemiş ağaçlar için benzersiz değildir, ancak bu önemsizdir.
j_random_hacker

2
Pek değil. Ağacın mutlaka yönü yoktur. en.wikipedia.org/wiki/Tree_(graph_theory) yönsüz bir ağaç örneği gösterir. Bunlar sıklıkla biyolojik bağlamlarda kullanılır.
Michal Palczewski

2
@ harshpatel991 ağaçları, "X ve Y'nin ebeveyn-çocuk ilişkisinde olduğu" yönüne sahip olmadığı yönünde yönlendirilmez. Bireysel ilişkiler, "X, Y'nin çocuğudur" ve "Y, X'in bir çocuğudur", yönlendirilmiş ilişkilerdir. Yön şunu gösterir; hareketin yönü. Ağaçlarda yön fikri, anlamlı olmadığı sürece (ağaçlarda en sık görülen durum) gerçekten gerekli değildir. En azından böyle görüyorum.
Kostas Mouratidis

105

Açıklamak yerine resimlerde göstermeyi tercih ederim.

Gerçek zamanlı bir ağaç

Gerçek zamanlı bir ağaç

Gerçek hayatta kullanımda bir grafik

Gerçek zamanlı 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ç:

resim açıklamasını buraya girin

Grafik:

resim açıklamasını buraya girin

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 :

  1. http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-17-trees-and-graphs/#_Toc362296541

  2. http://www.community-of-knowledge.de/beitrag/data-trees-as-a-means-of-presenting-complex-data-analysis/

  3. Vikipedi


7

Diğer cevaplar faydalıdır, ancak her birinin özelliklerini kaçırırlar:

grafik

Yönlendirilmemiş grafik, resim kaynağı: Wikipedia

Yönlendirilmiş grafik, görüntü kaynağı: Wikipedia

  • Bir dizi köşe (veya düğüm) ve bunların bir kısmını veya tümünü birbirine bağlayan bir kenar kümesinden oluşur
  • Herhangi bir kenar, özdeş bir kenarla önceden bağlanmamış iki köşeyi bağlayabilir (aynı yönde, yönlendirilmiş bir grafik durumunda)
  • Bağlanması gerekmez (kenarların tüm köşeleri birbirine bağlamak zorunda değildir): tek bir grafik birkaç bağlantısız köşe kümesinden oluşabilir
  • 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.

ağaç

Görüntü kaynağı: Wikipedia

  • Bir tür grafik
  • Köşelere daha yaygın olarak "düğümler" denir
  • Kenarlar yönlendirilir ve "bir çocuğu" (veya "ebeveyni") ilişkisini temsil eder
  • Her düğümün (kök düğüm hariç) tam olarak bir üst öğesi (ve sıfır veya daha fazla alt öğesi) vardır
  • Tam olarak bir "kök" düğüme sahiptir (ağacın en az bir düğümü varsa), bu üst öğe olmayan bir düğümdür
  • Bağlı olmalı
  • Asikliktir, yani döngüsü yoktur : "bir döngü, bir tepe noktasının kendisinden erişilebilir olduğu kenarların ve köşelerin bir yoludur [AKA dizisidir].

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.


3

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.


2

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.


1
Üzgünüm, yani grafik, haritayı yazdım.
user918304

"Harita" için "kafa karıştırıcı" grafik "çok kafa karıştırıcıdır." :)
cpz

1
"Grafikler ağaçlardan daha karmaşık" demek, "Kargalar kuşlardan daha özeldir" demek gibidir. Bunun yerine "Tüm ağaçlar grafik, ancak tüm grafikler ağaç değil" dememeli miyiz?
dudewad

Altı yıl sonra umrumda değil. Elbette burada zamanınızı daha iyi kullanabilirsiniz.
duffymo


0

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.


0

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.


0

Bir ağaç digrafidir, öyle ki:

a) kenar yönleri çıkarılmış, bağlı ve asiklik

  1. Döngüsel olmadığı varsayımını kaldırabilirsiniz.
  2. 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ı

  1. 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


0

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.