それはサボテンですか?


23

グラフ理論では、サボテンは接続されたグラフであり、グラフ内の異なる2つの単純なサイクルは、せいぜい1つの頂点を共有します。

これは、破線で囲まれた3つの単純なサイクルを持つサボテンです。

サボテングラフ

次のグラフは上の図と似ていますが、赤でラベル付けされた2つの頂点が2つの単純なサイクルで共有されているため、サボテンではありません。

サボテングラフではない

たとえば、次のグラフのように、物事は少し複雑になります。

また、サボテンのグラフではありません

サボテンのように見えるかもしれませんが、そうではありません。これは、次のサイクルを強調表示することで表示できます。

ハイライトされたサイクル

このサイクルは、グラフの多くの明白なサイクルと複数のポイントを共有します。

定義

  • 接続グラフは、任意の2つの頂点間に少なくとも1つのパスが存在するようなグラフです。

  • 単純なサイクルは、同じ頂点で開始および終了し、頂点を複数回訪れないグラフ上のパスです。

  • 単純なグラフは、頂点が2つ以上のエッジで互いに接続されておらず、頂点がそれ自体に接続されていない、無向で重みのないグラフです。シンプルなグラフは、最も基本的なタイプのグラフであり、ほとんどの人がグラフと言ったときの意味です。

仕事

入力として単純なグラフを取り、それがサボテングラフかどうかを判断します。TrueとFalseの2つの異なる値を出力する必要があります。適切な形式で入力できます。

これはので、回答のバイト数を最小限に抑えることを目指してください。

テストケース

隣接行列としてのテストケース


私のソリューションをご覧ください、それが有効かどうか教えてください。明らかなパターンがあまりにも明白で、何かを見逃しているように思えました。
シャギー

@Shaggy JavaScriptを読むことができません。説明していただければ、できるかもしれません。
小麦ウィザード

私は試すことができます。私は2つのことをチェックしていeます:1)正確に1つの要素をv含み、かつ正確に2を含み、かつAND vの最初の要素と等しいeか?2)ORはve?の各要素の最初の要素の和集合に等しい 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]]))
小麦ウィザード

その返す必要がありますtruefalse
シャギー

回答:


9

Mathematica、62バイト

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

チェック:(find all cycles, there are no duplicate edges)および(The graph is a connected graph)


1
gであるべき#ですよね?
-ngenisis

6
だからあなたは私にisCactusビルトインがないと言っているのですか?がっかりだよ。
アーロン

誰かが書いてください。
Draco18s

Mathematica Simplifiedを別の回答として配置する必要があります。
mbomb007

3
@Aaron CactusQ存在すれば、そうなると思います。
NieDzejkob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.