그림 1 (첫 번째 이미지)과 같은 그래프가 있고 빨간색 노드를 연결하여주기를 원하지만 순환은 해밀턴이 아니어야합니다 그림 2과 그림 3 (마지막 두 이미지)과 같습니다. 이 문제는 노드를 두 번 방문 할 수 있기 때문에 TSP보다 훨씬 큰 검색 공간을 가지고 있습니다. TSP와 마찬가지로 큰 그래프에서 모든 조합을 평가하는 것은 불가능하며 경험적으로 시도해야하지만 문제는 TSP와 달리주기 또는 둘러보기의 길이가 고정되어 있지 않다는 것입니다. 왜냐하면, 모든 청색 노드를 방문하는 것은 필수는 아니며, 이는 청색 노드 중 일부를 포함하는 가변 길이를 갖는 원인이되기 때문입니다. 평가를 위해 매회 "유효한"조합을 어떻게 생성 할 수 있습니까? 사이클은 {A, e, B, l, k, j, D, j, k, C, g, f, e} 또는 {A, e, B, l, k, j, D, {A, B, K, C, I, J, i, h, g} 디}.그래프에서주기 찾기 (반드시 해밀턴이나 모든 노드를 방문 할 필요는 없음)
업데이트 : 최종 목표는 길이와 위험을 고려하여 최적/최적에 가까운 사이클을 평가하는 것입니다 (아래 참조). 그래서 나는 길이를 최소화 할뿐만 아니라 위험을 최소화하려고합니다. 이것은 모든 노드 시퀀스를 알지 못하는 한주기의 위험을 평가할 수 없습니다. 희망이 왜 내가 생성 과정의 중간에 새로운주기를 평가할 수 없는지 명확하게. 다음과 같이 할 수 있습니다 :
- 가능한 사이클을 하나씩 생성하고 평가하십시오.
- 또는 가능한 모든 사이클을 생성 한 다음 평가를 수행하십시오. 위험의
정의 : 사이클을 가정은 다른 모든 빨간색 노드에 기본 노드 (빨간색 노드 중 하나)를 연결하는 고리입니다. 링의 일부 (에지)에서 장애가 발생할 경우 기본 노드에서 빨간색 노드를 연결 해제해야합니다 (원하는 경우). 그러나 우리는 두 번 통과해야만하는 몇 가지 모서리가 있습니다 (모든 적색 노드를 연결하는 해밀턴주기가 없기 때문에). 그리고 그 모서리에서 오류가 발생하면 일부 적색 노드가 완전히 끊어 질 수 있습니다. 그래서 사이클의 위험은 위험한 가장자리의 길이를 합한 것입니다 (우리는 링/투어에서 두 번씩) 각 위험한 가장자리를 잘라내는 경우 손실되는 빨간색 노드의 수를 곱합니다.
그리고 here 링크 Excel로이다 :
내가 5 개 빨간색 노드와 95 개 블루 노드를 포함 일하고 3D 그래프의 실제 예는 아래에있다 시트는 위의 그래프의 인접 행렬을 포함합니다 (처음 5 개의 노드는 빨간색이고 나머지는 파란색입니다).
매핑 방법을 약간 반영하면 빨간색 노드를 두 번 사용할 수있는 경우 작업의 중복을 너무 많이하는 경우 비효율적 일 수 있습니다. 따라서 나는 약간 다른 접근법을 사용하기 위해 나의 답을 다시 썼다. 또한 빨간색 노드가있는 몇 개의 샘플 인접 매트릭스/목록을 게시한다고 가정하지 않습니다. 그런 식으로 호기심에서 스스로 시험 할 수 있습니다. – Nuclearman
내가 가지고있는 샘플은 그림을 게시 한 그래프의 인접 행렬을 포함한 Excel 파일입니다. 내가 여기에 업로드했는지 테스트에 적합합니까? – Barpa
Excel은 괜찮 으면 필요한 경우 변환 할 수 있습니다. – Nuclearman