グラフ理論では、サボテンは接続されたグラフであり、グラフ内の異なる2つの単純なサイクルは、せいぜい1つの頂点を共有します。
これは、破線で囲まれた3つの単純なサイクルを持つサボテンです。
次のグラフは上の図と似ていますが、赤でラベル付けされた2つの頂点が2つの単純なサイクルで共有されているため、サボテンではありません。
たとえば、次のグラフのように、物事は少し複雑になります。
サボテンのように見えるかもしれませんが、そうではありません。これは、次のサイクルを強調表示することで表示できます。
このサイクルは、グラフの多くの明白なサイクルと複数のポイントを共有します。
定義
接続グラフは、任意の2つの頂点間に少なくとも1つのパスが存在するようなグラフです。
単純なサイクルは、同じ頂点で開始および終了し、頂点を複数回訪れないグラフ上のパスです。
単純なグラフは、頂点が2つ以上のエッジで互いに接続されておらず、頂点がそれ自体に接続されていない、無向で重みのないグラフです。シンプルなグラフは、最も基本的なタイプのグラフであり、ほとんどの人がグラフと言ったときの意味です。
仕事
入力として単純なグラフを取り、それがサボテングラフかどうかを判断します。TrueとFalseの2つの異なる値を出力する必要があります。適切な形式で入力できます。
これはコードゴルフですので、回答のバイト数を最小限に抑えることを目指してください。
私のソリューションをご覧ください、それが有効かどうか教えてください。明らかなパターンがあまりにも明白で、何かを見逃しているように思えました。
—
シャギー
@Shaggy JavaScriptを読むことができません。説明していただければ、できるかもしれません。
—
小麦ウィザード
私は試すことができます。私は2つのことをチェックしてい
—
シャギー
e
ます:1)正確に1つの要素をv
含み、かつ正確に2を含み、かつAND v
の最初の要素と等しいe
か?2)ORはv
、e
?の各要素の最初の要素の和集合に等しい 2番目のテストケースは最初のチェック(v=[1,2]=e[0]=[1,2]
)に合格し、trueである必要がある他のテストケースは2番目に一致します(例:case#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これは機能しません。たとえば、最初に提供された図は失敗します。
—
小麦ウィザード
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]]))
その返す必要があります
—
シャギー
true
かfalse
?