2010-07-27 2 views
2

나는 왼손 규칙을 사용하여 미로를 통과해야하며 프로그램이 오면 교차로를 기반으로해야한다는 프로젝트 작업 중입니다. 그래프에 연결할 노드를 만들어야합니다. 최단 경로를 결정하십시오. 목표는 프로그램을 미로를 통해 실행 한 다음 프로그램을 닫고 그래프가 포함 된 파일을 읽고 마무리의 최단 경로를 결정하는 것입니다. 내가 한 일은 왼손잡이 규칙을 사용하여 미로를 가로 질러 갈 수 있다는 것입니다. 어떤 생각을 할 때 교차로를 찾을 때마다 노드를 만들고 프로그램이 움직일 때마다 그 경로의 비용을 하나씩 늘립니다. 보조 노트에서 dijkstra의 알고리즘을 사용할 때 인접 행렬이 필요합니까?미로를 통과하는 최단 경로

+0

인접 행렬 또는 배열 목록 (인접 목록)을 사용할 수 있습니다. 왼손 규칙의 의미가 무엇인지 모르지만 dijkstra의 알고리즘이 그 일을 할 것이라고 생각합니다. –

+0

모든 미로가 왼손 법칙으로 해결 될 수있는 것은 아닙니다. Theseus는 틀렸다. – Borealid

+0

@Borealid : 모든 "완벽한 미로"가 가능합니다. 나는 그것이 OP가 말하는 것을 가정하고 있습니다 ... –

답변

2

이런 식으로 뭔가를 시도, 그것을 작동합니다 :

현재 위치에 대한 스택의 상단을 확인하고
 
0 - create an empty "solution path" stack of location objects. 

1 - if current position is maze exit, return "solution path" stack. 

2 - wall in front? turn left and repeat 2, else continue to 3. 

3 - if current position is at top of "solution path" stack, 
     pop it off of the stack 
     else push it onto the stack 

4 - move forward. 

, 당신이 있기 때문에, 단지 매우 마지막 전에 요소를 확인해야 할 수도 있습니다 마지막 하나는 방금 떠난 위치입니다.

+0

실제로 가장 짧은 경로를 찾으려면 그래프를 사용할 필요가 없습니다. – Zieklecknerizer

+0

2 단계가 올바르지 않습니다. 곧장 갈 수 있더라도 좌회전해야합니다 ... 좌회전 또는 직진 또는 우회전 및 밀기 또는 뒤로 이동 ... 실행해야합니다. 업데이트 할 시간이 없습니다. –

+0

그래 당신이 불행히도 나는 그래프와 diijkstas 알고리즘을 사용하여 최단 경로를 찾을 필요가있다 생각 ... 어떤 아이디어가 손실에 그 종류의 인스턴트 메신저. 프로그램이 교차로에 올 때마다 가장자리를 추가하여 그래프를 설정할 수 있다고 생각했습니다. 그리고 당신이 거기에서 다른 교차로 사이를 이동할 때마다. 하지만 그게 작동하지 않습니다 ... 어쩌면 내가 올바르게 또는 뭔가를 구현하지 않습니다. (매우 그래프 잘 아는 하하) 아픈 내가 어떤 진전을하면 어떻게하고 있는지 보여주는 몇 가지 코드를 추가! – Zieklecknerizer

관련 문제