Це кактус?


23

У теорії графів Кактус - це зв'язаний графік, такий, що будь-які виразні два простих циклу в графі ділять щонайменше одну вершину.

Ось Кактус з 3 простими циклами, окресленими пунктирними лініями.

Кактус графік

Наступний графік схожий на зображений вище, але не є кактусом, оскільки дві вершини, позначені червоним кольором, поділяються двома простими циклами.

Не графіка кактуса

Речі можуть бути дещо складнішими, наприклад наступний графік:

Також не графік Кактуса

Може виглядати як кактус, але це не так. Це можна показати, виділивши наступний цикл:

Виділений цикл

Цей цикл поділяє більше однієї точки з великою кількістю більш очевидних циклів на графіку.

Визначення

  • Зв'язаний графік - це такий графік, що існує принаймні один шлях між будь-якими двома вершинами.

  • Простий цикл - це шлях на графіку, який починається і закінчується в одній вершині і відвідує не одну вершину більше одного разу.

  • Простий графік - це непрямий, невагомий графік, такий, що жодна вершина не з'єднана дві один з одним більш ніж одним ребром і жодна вершина не з'єднана з собою. Простий графік - це самий основний тип графіка, і це те, що означає більшість людей, коли вони говорять.

Завдання

Візьміть простий графік як вхідний і вирішіть, чи це графік Кактуса. Ви повинні вивести два різних значення: для True та одне для False. Ви можете взяти інформацію в будь-якому форматі, який вважаєте за потрібне.

Це тому ви повинні прагнути мінімізувати кількість байтів ваших відповідей.

Випробування

Тестові випадки як матриці суміжності


Чи можете ви ознайомитись з моїм рішенням, дайте мені знати, чи воно дійсне? Я впав, як очевидний зразок був занадто очевидним і що я щось пропустив.
Кудлатий

@Shaggy Я не можу читати JavaScript, якщо ви поясніть це, можливо, зможу.
Пшеничний майстер

Я можу спробувати. Я перевіряю 2 речі: 1) Чи eмістить рівно один елемент І чи vмістить точно 2 І vрівний першому елементу e? 2) АБО vДорівнює об'єднанню перших елементів кожного елемента в e? Другий тест проходить перший чек ( v=[1,2]=e[0]=[1,2]) і інші тести , які повинні бути справжній матчем другими, наприклад , випадок # 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?
Кудлатий

Відповіді:


9

Математика, 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 спрощений як окрему відповідь.
mbomb007

3
@Aaron Це було б, CactusQякби воно існувало, я вважаю.
NieDzejkob
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.