Bir digrafiyi tersine çevrilemez bir şekilde yönlendirilmemiş bir grafiğe dönüştürme


10

Bir digrafiyi (yönlendirilmiş grafik) geri döndürülemez bir şekilde yönlendirilmemiş bir grafiğe dönüştürmek için bir algoritma arıyorum, yani yönlendirilmemiş grafik verilirse digrafinin yeniden yapılandırılabilir olması gerekir. Bunun daha fazla köşeye sahip yönlendirilmemiş grafiğin pahasına olacağını anlıyorum ama aldırmıyorum.

Bunun nasıl yapılacağını bilen var mı veya herhangi bir referans önerebilir mi? Şimdiden teşekkürler.


Güncelleme: Aşağıdaki AdrianN cevabı ile ilgili. İyi bir başlangıç ​​noktası olabilir ama şu anki haliyle çalıştığını düşünmüyorum. İşte neden olmadığını düşünüyorum bir görüntü: resim açıklamasını buraya girin


DW'nin yorumundan sonra güncelleme: Grafiklerin köşe noktalarının etiketsiz olduğunu düşünüyorum. Bir çözüm köşeleri (AdrianN'in yaptığı gibi) etiketlemeyi içeriyorsa, etiketleme nasıl yapılırsa yapılsın aynı (izomorfik) yönlendirilmemiş grafiği vermelidir. Etiketlenmiş köşeleri olan grafikler için "izomorfik" tanımım, iki grafiği ilişkilendiren etiketlemenin bir permütasyonu olduğu, ancak etiketlenmemiş grafikler için tam tanımdan emin olmadığım ...


1
Bence bu soru çok geniş. Kısıtlamalarınız neler?
adrianN

Şimdilik herhangi bir kısıtlama düşünemiyorum. Yönlendirilebilir bir grafiğin bilgisini, tersine çevrilebilir olduğu sürece, yönlendirilmemiş bir grafiğe kodlamanın herhangi bir yolunu tahmin ediyorum. Ben aklımda ne var yönlendirilmemiş grafiklerin en basit türüdür, bu yüzden köşeler veya kenarlar için renkleri kullanmayan bir çözüm arıyorum.
Heterotik

Soruda ne demek istediğinizi "aynı grafik" ile belirtmeniz gerektiğini düşünüyorum. Köşeleri etiketli mi yoksa köşeleri etiketsiz mi demek istiyorsun? Eğer bunu mu demek istiyorsunuz her ikisi için de aynıdır, ya da iki grafik izomorf olduğunu? İkincisi demek istediğiniz gibi geliyor. Bunun başvurunuzda bir gereklilik olduğundan emin misiniz? Etiketleri tutmanıza izin verilirse, sorun daha kolaylaşır ve AdrianN'nin yanıtı işe yarar (çünkü kenar kenarla aynı değildir ). (V,E)(3,4)(1,2)
DW

2
Lütfen dahil gündeme güncellemelerinizi. Herhangi bir zamanda, SE yayınları, geçmişi merak etmeden yukarıdan aşağıya okunabilir olmalıdır; ayrı ayrı arşivlenir.
Raphael

Yanıtlar:


6

Her yönlendirilmiş kenar için , yeni tepe noktaları eklemek ve yerine kenarlı , , , , , .e=(x,y)v1e,,v5eexv1ev1ev2ev1ev3ev3ev4ev4ev5ev3ey

Kodunu çözmek için, komşusu derece 2 olan her yaprak (derece-1 tepe noktası) bir kenar için olmalıdır  ; komşusu olan  ve diğer komşu  olan  .  iki derecesi 3 ve bir yaprak bitişik olan benzersiz bir komşu etti: komşudur  ve yaprağı  (eğer iki yaprak komşu olan, isteğe bağlı olarak bir seçim için ). Diğer komşu olup  ve diğer komşu olduğu  . Yönlendirilen kenarı geri yüklev5ee=(x,y)v4ev4ev3ev3ev1ev2ev1ev2ev1exv3ey(x,y) ve köşelerini silin .v1e,,v5e


7

David Richerby'nin cevabı (kabul edildi) iyidir.

Basit bir örnek digrafideki talimatlarını izledim ve umarım birine yardımcı olur.

digraph a <-> b, c -> a, b -> c

(Bunu David'in cevabına bir yorum olarak gönderirdim, ancak gereken itibar puanım yok.)


1
Grafiksel temsil orijinal cevap üzerinde büyük bir gelişmedir. Yorum olarak değil yanıt olarak gönderdiğiniz için teşekkür ederiz.
OrangeSherbet

1
Bir matematik makalesinde resmi bir açıklamaya veya formüle baktığımda kendimi her zaman bunalmış hissediyorum. Sadece bu kaygıyı aşmak ve her cümleye yavaşça bakmak zorundayım - ilerlerken bilmediğim şeylere bakmak. Sonra anladığımdan emin olmak için böyle bir örnek çiziyorum. Sonunda her zaman ne kadar basit olduğuna şaşkınım ve onu anlamak için ne kadar çaba harcadığımdan dehşete düştüm. Bazen farklı bir gezegenden gelmişim gibi geliyor. Daha çabuk anlamanıza yardımcı olabildiğim için memnunum. Bir kez gördüğünüzde, kolaydır.
William

2

Yönlendirilmiş bir grafiği dönüştürmek için D yönlendirilmemiş bir grafiğe G biri aşağıdakileri yapar:

  1. Düğümü D
  2. İki yönlendirilmemiş grafik oluşturma G, G aynı tepe noktasındaD
  3. Her bir kenar için , içinde kenar eklemek ise , başka bir kenar eklemekuvDGu<vG
  4. G, ve ayrık birliğidirGG

Ayrık birliği yaparken geri dönüşümlü olmaya özen gösterilmelidir.

Misal


Bu iyi bir girişimdir ve bir cevap için aklımda olan çizgiler boyunca ama işe yaramaz çünkü tersi benzersiz değildir. Örneğin, O <-> OOO grafiği OO OO OO OO grafiğine dönüştürülecektir, ancak bu sonuncusu aynı zamanda yönlendirilmiş O-> O O-> OOO grafiğinden de gelebilir, bu nedenle işlem geri döndürülemez.
Heterotik

Daha net olması için bir resim ekledim.
adrianN

-1

Kimlik işlevi ne olacak? Her digraf, eşit büyüklükte bölümlere sahip yönlendirilmemiş, iki taraflı bir grafik olarak görülebilir veya bunun tersi de geçerlidir.


digrafisini grafikle . Eğer, iki yönlü kenarları ile baş edemez, çünkü bu işi yapmaz tüm kenarları ters sonucudur , daha sonra ve izomorfik kodlamaları var ama kendileri mutlaka izomorf değildir. G=(V,E)(V×{0,1},{(u,0,v,1)(u,v)E})GGGG
David Richerby

-1

İşte bir bıçak:

Yön bilgilerini, yönlendirilmemiş grafikteki ek köşelerle değiştirin. Başka bir deyişle, yön bilgisini "kodlamak" için yönlendirilmemiş grafikteki ek köşeleri kullanın. Örneğin, en az bir kenarı olan yönlendirilmiş her köşe için 1 + 'gelen' kenar sayısına eşit sayıda yönlendirilmemiş köşe ekleyin. Sıfır kenarlı tepe noktaları değişmeden kalır.

Ters yönü gerçekleştirmek için, 0 veya 1'den fazla kenarı olan her tepe için yönlendirilmiş bir tepe noktası oluşturun. (Tam olarak bir kenara sahip köşeler "yön kodlama" köşeleridir). Başka bir çok kenarlı tepe noktasını bağlayan her kenar, yönlendirilmiş grafikteki bir bağlantıdır. Şimdi bir algoritmayı açıklayamadığım zor kısım (ama bence bir tane var): Her köşe için yalnızca gelen okların sayısı verilen okların yönünü çıkarmalısınız.

Ben zor kısmı mayın tarama gemisi oynamak gibi bir tür olduğunu düşünüyorum :-) Nerede bombalar (gelen kenarları) her kare (tepe) için bitişik bomba sayısı verildiğini anlayın.


"Yönlendirilmiş tepe" nedir? Her durumda, bu benzersiz bir şekilde çözülemez. Bir tepe , diğer derecelerin bir demet köşesi ile birlikte bir demet derece-1 köşesine sahip olduğunu varsayalım . Bunlardan kaç tanesinin derece 1 köşelerinden gelen kenarları temsil ettiğini ve kaç tanesinin derecesini kodladığını nasıl anlarsınız ? Her durumda, Mayın Tarlası'nı çözmek NP zordur, çözüm her zaman benzersiz değildir ve kareler mutlaka güzel bir ızgarada düzenlenmediğinde hiç çözülemeyeceği açık değildir. xx
David Richerby

"Yönlendirilmiş tepe noktası" ile, yönlendirilmiş grafikte (eşdeğer yönlendirilmemiş grafiğin aksine) bir tepe noktası anlamına gelir. "Gerçek" kenarları "derece kodlaması" kenarlarından ayırt edebilirsiniz, çünkü yalnızca "derece kodlaması" köşeleri tek bir kenara sahiptir. Açıklamamda "1 +" olmasının nedeni buydu. Mayın tarama gemisi "zor kısım" hakkında sözünü alacağım. Mayın tarama gemisi ile tam olarak eşdeğer olduğunu bilmiyorum, ama belki de kovayı sadece yola tekmelediğime inanabilirim :-)
Aaron

Ayrıca, ilk okuduğumda çözümünüzü tam olarak anlamadım, ama şimdi nasıl çalıştığını görüyorum. Zeki!
Aaron

, orijinal grafikte, gelen kenarları ve tam olarak bir giden kenarı olmayan bir tepe noktası olsun . Kodlanmış grafikte , tam olarak bir kenarı dışarı gelecek şekilde bir tepe noktası olarak görünür. Bu derece-1 tepe noktasını derece-kodlayan derece-1 tepe noktasından nasıl ayırt edersiniz? xx
David Richerby

Sanırım şimdi "mayın tarama gemisi-moot", ama benim fikrim yönlendirilen kenarı alıp ve . Yani 1 değil iki kenarı olacaktır. Sadece 1 kenarı olan herhangi bir tepe noktası kodlamadır. , 1 derecesini gösteren iki derece kodlama köşesine sahiptir. Bu basit örnekte, kod çözme kolaydır, çünkü yalnızca iki köşe olduğunu biliyoruz ve sırasıyla 0 ve 1 dereceye sahipler, bu nedenle(x,y)(x0,x),(x,y),(y,y0)(y,y1)xy(x,y)
Aaron
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.