Kaktüs mü?


23

Grafik teorisinde, bir Kaktüs , grafikteki herhangi iki basit çevrimin en fazla bir tepe noktasını paylaşacağı şekilde bağlı bir grafiktir.

İşte kesik çizgilerle özetlenen 3 basit çevrimi olan bir Kaktüs.

Kaktüs Grafiği

Aşağıdaki grafik yukarıda gösterilene benzemektedir ancak bir Kaktüs değildir, çünkü kırmızı ile işaretlenmiş iki köşe iki basit döngü tarafından paylaşılmaktadır.

Kaktüs Grafiği Değil

İşler biraz daha zor olabilir, örneğin aşağıdaki grafik:

Ayrıca bir Kaktüs grafiği değil

Kaktüs gibi görünebilir ama değil. Bu, aşağıdaki döngüyü vurgulayarak gösterilebilir:

Vurgulanan döngü

Bu döngü, grafikte daha belirgin döngülerin çoğuyla birden fazla noktayı paylaşır.

Tanımlar

  • Bağlı grafik, herhangi iki köşe arasında en az bir yol bulunacak şekilde bir grafiktir.

  • Basit bir döngü, aynı tepe noktasında başlayan ve biten ve hiçbir noktayı birden fazla ziyaret etmeyen bir grafikteki yoldur.

  • Basit bir grafik, yönlendirilmemiş, ağırlıklandırılmamış bir grafiktir; öyle ki, hiçbir köşe birbirine birden fazla kenara bağlı değildir ve hiçbir köşe kendisine bağlanmamıştır. Basit bir grafik, en temel grafik türüdür ve çoğu insanın grafik derken ne demek istediğidir.

Görev

Giriş olarak basit bir grafik alın ve bunun bir Kaktüs grafiği olup olmadığına karar verin. Biri True için diğeri False için iki farklı değer çıkarmalısınız. Girdi, uygun gördüğünüz herhangi bir biçimde girebilirsiniz.

Bu olduğundan cevaplarınızın bayt sayısını en aza indirmeyi hedeflemelisiniz.

Test Kılıfları

Bitişiklik Matrisi Olarak Test Durumları


Çözümüme bir göz atabilir misiniz, geçerli olup olmadığını bildirir misiniz? Açık bir kalıp çok açıktı ve bir şeyleri özlediğimden düştüm.
Shaggy

@Shaggy JavaScript okuyamıyorum, açıklarsanız yapabilirim.
Buğday Sihirbazı

Deneyebilirim. 2 şeyi kontrol ediyorum: 1) eTam olarak bir öğe viçeriyor VE tam olarak 2 içeriyor VE vilk öğeye eşit emi? 2) VEYA vHer bir elementin ilk elementinin birlik kümesine eşit emi? İkinci test durumu ilk kontrolü (geçer v=[1,2]=e[0]=[1,2]) ve ikinci gerçek maç olmalıdır diğer test durumları, mesela vaka # 4: v=[1,2,3,4,5,6]=[e[0][0],e[1][0],e[2][0],e[4][0]]=[1,2,3,4,5,6].
Shaggy

@Shaggy Bu, örneğin sağlanan ilk diyagram çalışmazsa çalışmaz. console.log(f([1,2,3,4,5,6,7,8,9,10,11,12,13])([[1,2],[1,3],[3,4],[2,4],[3,5],[5,6],[6,7],[7,8],[8,5],[7,9],[9,10],[10,11],[11,7],[8,12],[8,13]]))
Buğday Sihirbazı

Bu getiri mıyım trueyoksa false?
Shaggy

Yanıtlar:


9

Mathematica, 62 bayt

Sort@#==#⋃#&[Join@@FindCycle[#,∞,All]]&&ConnectedGraphQ@#&

Çekler: (find all cycles, there are no duplicate edges)ve(The graph is a connected graph)


1
golmalı #, değil mi?
ngenis

6
Yani bana isCactusyerleşik olmadığını mı söylüyorsun ? Hayal kırıklığına uğradım.
Aaron,

Birisi bir tane yazmalı.
Draco18

Mathematica Sadeleştirilmiş'i ayrı bir cevap olarak koymalısınız.
mbomb007

3
@Aaron CactusQVarsa, inanıyorum.
NieDzejkob
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.