선인장인가요?


23

그래프 이론에서 Cactus 는 연결된 그래프로, 그래프에서 구별되는 두 개의 간단한주기가 최대 하나의 정점을 공유합니다.

다음은 3 개의 간단한주기가 점선으로 표시된 선인장입니다.

선인장 그래프

다음 그래프는 위의 그림과 비슷하지만 빨간색으로 표시된 두 정점이 두 개의 간단한 주기로 공유되므로 선인장이 아닙니다.

선인장이 아님

예를 들어 다음 그래프와 같이 조금 까다로울 수 있습니다.

또한 선인장 그래프가 아닙니다

선인장처럼 보일지 모르지만 그렇지 않습니다. 이것은 다음주기를 강조 표시하여 표시 할 수 있습니다.

강조 표시된주기

이주기는 그래프에서보다 명백한주기와 함께 하나 이상의 점을 공유합니다.

정의

  • 연결된 그래프는 두 정점 사이에 하나 이상의 경로가 존재하는 그래프입니다.

  • 간단한주기는 동일한 정점에서 시작하고 끝나고 정점을 두 번 이상 방문하지 않는 그래프의 경로입니다.

  • 단순 그래프는 방향이 정해지지 않은 비가 중 그래프이므로 정점이 하나 이상의 가장자리로 서로 연결되어 있지 않고 정점이 자체 연결되지 않습니다. 간단한 그래프는 가장 기본적인 그래프 유형이며 대부분의 사람들은 그래프를 말할 때 의미합니다.

태스크

간단한 그래프를 입력으로 사용하여 선인장 그래프인지 결정하십시오. True와 False에 대해 두 개의 고유 한 값을 출력해야합니다. 원하는 형식으로 입력 할 수 있습니다.

이것은 이므로 답의 바이트 수를 최소화하는 것을 목표로해야합니다.

테스트 사례

인접 행렬로서의 테스트 사례


내 솔루션을 볼 수 있습니까, 그것이 유효한지 알려주세요. 나는 명백한 패턴이 너무 명백해서 무언가를 놓친 것처럼 떨어졌습니다.
Shaggy

@Shaggy JavaScript를 읽을 수 없습니다. 설명하면 가능할 것입니다.
밀 마법사

내가 시도 할 수 있습니다. 2 가지를 확인하고 있습니다 : 1) e정확히 하나의 요소를 v포함하고 정확히 2를 포함하고 AND v의 첫 번째 요소와 같습니다 e. 2) OR? v에서 각 요소의 첫 번째 요소의 공용체 집합과 같습니다 e. 두 번째 테스트 사례는 첫 번째 검사 ( v=[1,2]=e[0]=[1,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

@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?
Shaggy

답변:


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내장 이 없다고 말하고 있습니까? 나는 실망했다.
Aaron

누군가 하나를 작성해야합니다.
Draco18s

Mathematica Simplified를 별도의 답변으로 작성해야합니다.
mbomb007

3
@Aaron CactusQ존재한다면 가능할 것입니다.
NieDzejkob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.