2010-03-16 5 views
1

현재 MATLAB에서 최적화 알고리즘을 작성 중입니다. 완전히 빨기 때문에 실제로 도움을받을 수 있습니다. 기본적으로그래프/트리 표현 및 재귀

alt text http://img100.imageshack.us/img100/3232/graphe.png

11/12/13이 : 난 정말이 같은 다소 보일 것이다 (자세한 몇 뿌리를 가진 나무처럼 잘 나) 그래프를 표현하는 좋은 방법을 찾기 위해 사투를 벌인거야 우리의 뿌리 (0 단계), 2x는 1 단계, 3 단계는 2 단계, 4 단계는 3 단계입니다. 보시다시피 스테이지 X의 노드는 스테이지 (X + 1)의 여러 노드에만 연결되므로 (모든 노드에 연결할 필요는 없습니다).

중요 : 각 노드는 여러 값 (최소 3-4)을 보유해야하며 하나는 숫자이고 다른 두 개 이상의 변수는 의사 결정을 최적화하는 데 사용됩니다.

매트릭스를 사용하는 간단한 표현이 있지만 유지 관리가 정말 어렵습니다. 그렇게 할 수있는 좋은 방법이 있는지 궁금합니다.

두 번째 질문 : 그 표현으로 끝났을 때 나는 각 경로가 뿌리부터 끝까지 얼마나 좋은지를 계산해야한다. (내가 11-21-31-41을 비교할 필요가 있다고 가정 해 보자. 11-21-31-42), 각 노드가 보유하고있는 변수를 사용할 것입니다. 그러나 값은 재귀 적으로 계산되어야합니다. 11에서 시작한다고 가정 해 봅시다. 그러나 11-21-31-41이 처음으로 41에 가야하고, 몇 가지 계산을 수행하고, 31로 이동하고, 계산을 수행하고, 처리를 수행해야합니다. ~ 21은 몇 가지 계산을 수행 한 다음 모든 이전 계산을 사용하여 11을 계산할 수 있습니다. 11-21-31-42와 동일합니다 (42에서 시작하여 31-> 21-> 11). 그렇게 가능한 모든 경로를 확인해야합니다. 여기에 질문이 있습니다. 어떻게해야합니까? 아마도 BFS/DFS일까요? 그러나 모든 결과를 저장하는 방법을 잘 모르겠습니다.

몇 가지 질문이 많지만 숙제하는 것을 요구하지 않았 으면 좋겠다. (모든 알고리즘을 가지고 있기 때문에 matlab에별로 좋지 않고 선생님이 나를 허용하지 않을 것입니다. 자바에서 그것을 할).

답변

3

부여 된 것은 가장 효율적인 솔루션은 아니지만 Matlab 2008 이상에 액세스 할 수있는 경우 노드 클래스를 정의하여 그래프를 나타낼 수 있습니다.

Matlab documentation에는 템플릿으로 사용할 수있는 링크 된 목록에 대한 좋은 예가 있습니다.

기본적으로 노드에는 연결되는 노드의 색인을 가리키는 'linksTo'속성과 각 링크의 비용을 계산하는 메소드가있을 수 있습니다 (각 링크를 설명하는 몇 가지 추가 속성이 있음)). 그런 다음 필요한 것은 각 링크를 이동하고 백업으로 이동할 때 비용을 가져 오는 기능입니다.