나는 비교적 작은 (40-80 노드) 큐빅 (3- 규칙) 평면 그래프를 가지고 있으며, 나는 그들의 해밀턴 성을 결정해야한다. 나는이 작업은 NP-완료되었다는 사실을 알고,하지만 난 그럼에도 불구하고 나는에 관심이 그래프의 크기가 매우 빠르다 점근 지수 시간 알고리즘에 대한 희망 http://mathworld.wolfram.com/HamiltonianCycle.html에서큐빅 평면 그래프에서 해밀턴 사이클을 찾는 것
답변
40 노드가 행할 것 같다. 포함 할 40 개의 가장자리 중 40 개를 선택합니다.
깊이 우선 검색을 시도해 봅시다.
시작하려면 꼭지점 V를 선택하십시오. 세 개의 입사 에지 중 하나를 제외해야합니다. 한 번에 하나씩이 세 가지 가능성을 시도하십시오. 제외 할 모서리를 선택하면 4 개의 모서리가 포함됩니다. 그런 다음 제외 된 가장자리의 꼭짓점을 "사용됨"이라고합니다.
이 프로세스를 10 회 반복 할 수있는 경우 모든 40 개 가장자리를 선택하여 3^10 (59049) 개의 가능성 만 검색하면됩니다. 물론, 충분한 엣지가 결정된 후에는 "분리 된"꼭지점이 부족할 것입니다.
하지만 이제 알고리즘에 대한 아이디어가 있습니다. 각 단계에서 "사용 된"이웃이 가장 적은 버텍스를 선택하십시오. 사실, 사용 된 모서리가 강제되기 때문에 2 개의 이웃이있는 버텍스를 선택하는 것이 가장 좋습니다. 1 또는 0으로 이웃을 사용하는 버텍스를 선택하는 것이 차선책인지 잘 모르겠습니다. 두 가지 방법을 시도해보십시오! (그리고 사용 된 이웃 3 개는 검색 실패를 나타냅니다.)
가장자리 선택이 완료되면 단일주기를 형성하는지 확인하십시오.
몇 가지 샘플 그래프가 있습니까? 간단한 구현을 시도해 볼 수 있습니다.
:. 는 "루빈 (1974)에 대해 설명 백 트랙킹과 추측을 크게 감소시키는 공제를 사용하여 해밀턴 경로 및 회로의 일부 또는 전부를 그래프로 찾을 수있는 효율적인 검색 절차 "라고 말했습니다.
용지가 여기에 판매를위한 것입니다 http://portal.acm.org/citation.cfm?id=321850.321854
- 1. 완벽한 그래프에서 최대 도수를 찾는 것
- 2. 해밀턴 회로
- 3. 간단한 그래프에서 '최대'독립 세트를 찾는 알고리즘
- 4. 이중화를 찾는 것
- 5. 자바가 창을 찾는 것
- 6. 리스트에서 위치를 찾는 것,
- 7. 큐빅/곡선 부드러운 보간
- 8. 평면 그래프
- 9. AS3으로 무대에서 좌표를 찾는 것
- 10. 정수의 설정 비트를 찾는 것
- 11. as3 블록의 오프셋을 찾는 것
- 12. DNA 계산을 이용한 그래프 해밀턴 경로
- 13. iPhone UITableView 평면 배열에서 변수 행 섹션을 채우는 것
- 14. 포인터에서 큐빅 구조 읽기
- 15. 큐빅 이미지 변환기?
- 16. 순환 방향 그래프에서 다중 사이클 감지하기
- 17. 해밀턴 경로 문제에 대한 변이
- 18. 3D 평면 평면 교차점, 단순 평면으로
- 19. C에서 평면 삽입 (평면 면회) 알고리즘 #
- 20. 그래프에서 제약 조건을 만족하는 최단 경로를 찾는 방법
- 21. 그래프에서 기본 회로 (주기)를 찾는 Johnson의 알고리즘 구현
- 22. Java : 1 차원 그래프에서 구멍을 찾는 방법은 무엇입니까?
- 23. 그래프에서 노드 그룹에 가장 가까운 노드를 찾는 방법은 무엇입니까?
- 24. 사이클을 동기화하는 방법은 무엇입니까?
- 25. 그래프에서 전임자입니까?
- 26. 폐쇄 형 큐빅 루트 파인더 구현
- 27. OpenGL 이미지 평면 좌표 찾기
- 28. 큐빅 B- 스플라인의 길이 찾기
- 29. ROW_NUMBER()와 nhibernate - 항목 페이지를 찾는 것
- 30. Fluent NHibernate에서 중복 매핑 소스를 찾는 것