Grafik (soyut veri türü) - Graph (abstract data type)

Bir Yönlendirilmiş grafik üç ile köşeler (mavi daireler) ve üç kenarlar (siyah oklar).

İçinde bilgisayar Bilimi, bir grafik bir soyut veri türü bu, uygulamak içindir yönsüz grafik ve Yönlendirilmiş grafik alanından kavramlar grafik teorisi içinde matematik.

Bir grafik veri yapısı, sonlu (ve muhtemelen değiştirilebilir) Ayarlamak nın-nin köşeler (olarak da adlandırılır düğümler veya puan), yönsüz bir grafik için bu köşelerin sırasız çiftleri veya yönlendirilmiş bir grafik için sıralı çiftler kümesi ile birlikte. Bu çiftler olarak bilinir kenarlar (olarak da adlandırılır bağlantılar veya çizgiler) ve yönlendirilmiş bir grafik için de bilinir oklar. Köşeler, grafik yapısının bir parçası olabilir veya tamsayı endeksleri ile temsil edilen harici öğeler olabilir veya Referanslar.

Bir grafik veri yapısı ayrıca her bir kenara bazılarını ilişkilendirebilir. kenar değerisembolik bir etiket veya sayısal bir öznitelik (maliyet, kapasite, uzunluk vb.) gibi.

Operasyonlar

Bir grafik veri yapısı tarafından sağlanan temel işlemler G genellikle şunları içerir:[1]

  • komşu(G, x, y): tepe noktasından bir kenar olup olmadığını test eder x tepe noktasına y;
  • komşular(G, x): tüm köşeleri listeler y öyle ki tepe noktasından bir kenar var x tepe noktasına y;
  • add_vertex(G, x): tepe noktasını ekler xorada değilse;
  • remove_vertex(G, x): tepe noktasını kaldırır xeğer varsa;
  • add_edge(G, x, y): tepe noktasından kenar ekler x tepe noktasına yorada değilse;
  • remove_edge(G, x, y): kenarı tepe noktasından kaldırır x tepe noktasına yeğer varsa;
  • get_vertex_value(G, x): köşe ile ilişkili değeri döndürür x;
  • set_vertex_value(G, x, v): tepe noktasıyla ilişkili değeri ayarlar x -e v.

Değerleri kenarlarla ilişkilendiren yapılar genellikle şunları da sağlar:[1]

  • get_edge_value(G, x, y): kenarla ilişkili değeri döndürür (x, y);
  • set_edge_value(G, x, y, v): kenarla ilişkili değeri ayarlar (x, y) için v.

Beyanlar

Pratikte grafiklerin gösterimi için farklı veri yapıları kullanılır:

Komşuluk listesi[2]
Tepe noktaları kayıtlar veya nesneler olarak saklanır ve her köşe bir liste bitişik köşelerin. Bu veri yapısı, köşelerde ek verilerin depolanmasına izin verir. Kenarların nesneler olarak da saklanması durumunda ek veriler depolanabilir; bu durumda her köşe, gelen kenarlarını ve her kenar, olay köşelerini saklar.
Bitişiklik matrisi[3]
Satırların kaynak köşeleri ve sütunların hedef köşeleri temsil ettiği iki boyutlu bir matris. Kenar ve köşelerdeki veriler harici olarak depolanmalıdır. Her köşe çifti arasında yalnızca bir kenarın maliyeti saklanabilir.
Sıklık matrisi[4]
Satırların köşeleri ve sütunların kenarları temsil ettiği iki boyutlu bir Boole matrisi. Girişler, bir satırdaki tepe noktasının bir sütundaki kenara denk gelip gelmediğini gösterir.

Aşağıdaki tablo, zaman karmaşıklığı Bu gösterimlerin her biri için grafikler üzerinde çeşitli işlemler gerçekleştirmenin maliyeti |V | köşe sayısı ve |E | kenarların sayısı.[kaynak belirtilmeli ] Matris gösterimlerinde, girişler bir kenarı takip etmenin maliyetini kodlar. Mevcut olmayan kenarların maliyetinin ∞ olduğu varsayılır.

Komşuluk listesiBitişiklik matrisiSıklık matrisi
Mağaza grafiği
Köşe ekle
Kenar ekleyin
Köşeyi kaldır
Kenarı kaldır
Köşeler x ve y bitişik mi (saklama konumlarının bilindiği varsayılarak)?
UyarılarTüm köşeleri veya kenarları bulması gerektiğinden, köşeleri ve kenarları kaldırmak için yavaşKöşelerin eklenmesi veya çıkarılması yavaş, çünkü matrisin yeniden boyutlandırılması / kopyalanması gerekirMatrisin yeniden boyutlandırılması / kopyalanması gerektiğinden, köşeleri ve kenarları eklemek veya kaldırmak yavaş

Bitişiklik listeleri genellikle tercih edilir çünkü bunlar seyrek grafikler. Grafik yoğunsa, yani kenar sayısı ise bitişik matris tercih edilir |E | kare köşelerin sayısına yakın, |V |2veya iki köşeyi birbirine bağlayan bir kenar varsa, hızlı bir şekilde bakılabilmesi gerekiyorsa.[5][6]

Paralel Grafik Gösterimleri

Grafik problemlerinin paralelleştirilmesi önemli zorluklarla karşı karşıyadır: Veriye dayalı hesaplamalar, yapılandırılmamış problemler, zayıf konum ve hesaplama oranına yüksek veri erişimi.[7][8] Paralel mimariler için kullanılan grafik gösterimi, bu zorlukların üstesinden gelmede önemli bir rol oynar. Kötü seçilmiş temsiller, algoritmanın iletişim maliyetini gereksiz şekilde artırabilir ve ölçeklenebilirlik. Aşağıda, paylaşılan ve dağıtılmış bellek mimarileri ele alınmıştır.

Paylaşılan hafıza

Bir durumunda paylaşılan hafıza model, paralel işlem için kullanılan grafik gösterimleri sıralı durumdakiyle aynıdır,[9] çünkü grafik gösterimine paralel salt okunur erişim (ör. bitişiklik listesi ) paylaşılan bellekte etkilidir.

Dağıtılmış Bellek

İçinde dağıtılmış bellek model, olağan yaklaşım, bölüm köşe kümesi grafiğin içine setleri . Buraya, mevcut işleme elemanlarının (PE) miktarıdır. Köşe seti bölümleri daha sonra eşleşen endeksli PE'lere ve ayrıca karşılık gelen kenarlara dağıtılır. Her PE'nin kendine ait alt grafik başka bir bölümdeki bir uç noktaya sahip kenarların özel dikkat gerektirdiği temsil. Standart iletişim arayüzleri için MPI, diğer uç noktaya sahip olan PE'nin kimliği tanımlanabilir olmalıdır. Dağıtık bir grafik algoritmalarında hesaplama sırasında, bilgilerin bu kenarlardan geçirilmesi iletişim anlamına gelir.[9]

Grafiği bölümlere ayırma dikkatlice yapılması gerekiyor - düşük iletişim ve hatta boyut bölümleme arasında bir denge var[10] Ancak bir grafiği bölmek NP açısından zor bir sorundur, bu yüzden onları hesaplamak mümkün değildir. Bunun yerine, aşağıdaki buluşsal yöntemler kullanılır.

1D bölümleme: Her işlemci köşeler ve karşılık gelen giden kenarlar. Bu, bitişik matrisin satır bazlı veya sütun bazlı ayrışması olarak anlaşılabilir. Bu gösterimde çalışan algoritmalar için bu, Hepsi Bir Arada iletişim adımının yanı sıra her bir PE potansiyel olarak diğer her bir PE'ye giden kenarlara sahip olduğundan ileti arabellek boyutları.[11]

2D bölümleme: Her işlemci bitişik matrisin bir alt matrisini alır. İşlemcilerin dikdörtgen şeklinde hizalandığını varsayın , nerede ve sırasıyla her satır ve sütundaki işleme öğelerinin miktarıdır. Ardından her işlemci bir alt matris bitişik boyut matrisinin . Bu bir dama tahtası bir matristeki desen.[11] Bu nedenle, her işleme birimi, aynı satır ve sütunda yalnızca PE'lere giden kenarlara sahip olabilir. Bu, her PE için iletişim ortağı sayısını sınırlandırır. dışında olası olanlar.

Ayrıca bakınız

Referanslar

  1. ^ a b Bkz. Ör. Goodrich ve Tamassia (2015), Bölüm 13.1.2: Grafikler üzerindeki işlemler, s. 360. Daha ayrıntılı işlemler için bkz. Mehlhorn, K.; Näher, S. (1999), "Bölüm 6: Grafikler ve veri yapıları", LEDA: Kombinasyonel ve geometrik hesaplama için bir platform, Cambridge University Press, s. 240–282.
  2. ^ Cormen vd. (2001), s. 528–529; Goodrich ve Tamassia (2015), s. 361-362.
  3. ^ Cormen vd. (2001), s. 529–530; Goodrich ve Tamassia (2015), s. 363.
  4. ^ Cormen vd. (2001), Egzersiz 22.1-7, s. 531.
  5. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001), "Bölüm 22.1: Grafiklerin gösterimleri", Algoritmalara Giriş (İkinci baskı), MIT Press ve McGraw-Hill, s. 527–531, ISBN  0-262-03293-7.
  6. ^ Goodrich, Michael T.; Tamassia, Roberto (2015), "Bölüm 13.1: Grafik terminolojisi ve gösterimleri", Algoritma Tasarımı ve Uygulamaları, Wiley, s. 355–364.
  7. ^ Bader, David; Meyerhenke, Henning; Sanders, Peter; Wagner, Dorothea (Ocak 2013). Grafik Bölümleme ve Grafik Kümeleme. Çağdaş Matematik. 588. Amerikan Matematik Derneği. doi:10.1090 / conm / 588/11709. ISBN  978-0-8218-9038-7.
  8. ^ LUMSDAINE, ANDREW; GREGOR, DOUGLAS; HENDRICKSON, BRUCE; BERRY, JONATHAN (Mart 2007). "Paralel Grafik İşlemede Zorluklar". Paralel İşleme Mektupları. 17 (1): 5–20. doi:10.1142 / s0129626407002843. ISSN  0129-6264.
  9. ^ a b Sanders, Peter; Mehlhorn, Kurt; Dietzfelbinger, Martin; Dementiev, Roman (2019). Sıralı ve Paralel Algoritmalar ve Veri Yapıları: Temel Araç Kutusu. Springer Uluslararası Yayıncılık. ISBN  978-3-030-25208-3.
  10. ^ "Grafiklerin Paralel İşlenmesi" (PDF).
  11. ^ a b "Dağıtılmış bellek sistemlerinde paralel genişlikte ilk arama | 2011 Uluslararası Yüksek Performanslı Hesaplama, Ağ Oluşturma, Depolama ve Analiz Konferansı Bildirileri". doi:10.1145/2063384.2063471. S2CID  6540738. Alıntı dergisi gerektirir | günlük = (Yardım)

Dış bağlantılar