ai_프로젝트결과보고서(최종)
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

ai_프로젝트결과보고서(최종)에 대한 보고서 자료입니다.

본문내용

눈에 명확하게 볼 수 있도록 구현한다.
6. 참고문헌 및 사이트
6.1 참고 문헌
(닷넷 프로그래밍 정복) (뇌를 자극하는 알고리즘)
6.2 참고 사이트
http://madkid.info/15
http://golee07.tistory.com/367
http://www.silverwolf.co.kr/4828
부록
1. 간트 차트
2. 역할 분담
이름
역할
비고
차제희
프로그램 코딩 및 통합
팀장
김용제
데이터 베이스 작성
이수용
프로그램 UI 및 보고서 제작
강유진
프로그램 코딩 및 자료 수집
국민재
보고서 작성 및 피피티 제작
정민석
프로그램 코딩
3. 소스코드
최 단 거 리
// 최단시간경로검색
void searchPathOfMinTime(int id, int time, int transfer)
{
// 시작역은건너뜀(처음시작점에서의이동은무시)
if (nodeNames[id].Equals(beginNodeName))
{
time = 0;
transfer = 0;
}
// 끝역도달
if (nodeNames[id].Equals(endNodeName))
{ // 도착점에도달하였으면,
if (time < answerTime || (time == answerTime && answerTransfer > transfer))
{ //최소거리일경우
answerTime = time; // 답이라고저장한다.
answerTransfer = transfer;
endNodeID = id;
}
}
minTimes[id] = time; //최적값을저장한다.
minTransfers[id] = transfer;
// 다음노드탐색
TNode node = nodes[id].next;
while (null != node)
{
int nextTransfer = transfer;
// 환승
if (nodeNames[id].Equals(nodeNames[node.key]))
{ //역이름이같다면환승값을올려준다.
++nextTransfer;
}
// 현재까지의최적거리보다빠르거나, 같을때환승갯수가작다면
if (-1 == minTimes[node.key] || time + node.time < minTimes[node.key] ||
(time + node.time == minTimes[node.key] && nextTransfer < minTransfers[node.key]))
{
visitedNodes[node.key] = id; //어디서왔는지를저장하여출력할때쓴다.
searchPathOfMinTime(node.key, time + node.time, nextTransfer); //탐색을계속한다.
}
node = node.next;
}
}
최단거리 함수는 첫 번째 조건이 시간이고, 이 시간이 같을 때 환승의 수가 더 적은 것을 우선으로 친다.
3.1 최단 거리 경로 구하는 알고리즘
3.2 최소 환승 경로 구하는 알고리즘최 소 환 승
//최소환승경로탐색
void searchPathOfMinTransfer(int id, int time, int transfer)
{
// 시작역은건너뜀
if (nodeNames[id].Equals(beginNodeName))
{
time = 0;
transfer = 0;
}
// 끝역도달
if (nodeNames[id].Equals(endNodeName))
{ // 역이름이같다면환승값을올려준다.
//현재환승갯수보다작거나, 환승이같을때거리가더작다면
if (transfer < answerTransfer || (time < answerTime && answerTransfer == transfer))
{
answerTime = time;//답이라고저장한다.
answerTransfer = transfer;
endNodeID = id;
}
}
minTimes[id] = time;
minTransfers[id] = transfer;
// 다음노드탐색
TNode node = nodes[id].next;
while (null != node)
{
int nextTransfer = transfer;
// 환승
if (nodeNames[id].Equals(nodeNames[node.key]))
{ // 역이름이같다면환승값을올려준다.
++nextTransfer;
}
// 현재환승갯수보다작거나, 환승이같을때거리가더작다면
if (-1 == minTransfers[node.key] || nextTransfer < minTransfers[node.key] ||
(nextTransfer == minTransfers[node.key] && time + node.time < minTimes[node.key]))
{
visitedNodes[node.key] = id; //어디서왔는지를저장하여출력할때쓴다.
searchPathOfMinTransfer(node.key, time + node.time, nextTransfer); //탐색을계속한다.
}
node = node.next;
}
}
최단거리 함수는 첫 번째 조건이 환승이고, 이 환승수가 같을 때 시간의 수가 더 적은 것을 우선으로 친다.
3.3 출력경로 확인 함수
출력 경로 확인
void trackVisitedNodes(int id, bool isTransfer)
{ // id는역아이디, isTransfer 환승여부
if (nodeNames[id].Equals(beginNodeName))
{ //시작점까지왔으면리턴
path += beginNodeName + \" \"
return
}
if (nodeNames[visitedNodes[id]].Equals(nodeNames[id]))
{ //역이환승역이라면
trackVisitedNodes(visitedNodes[id], true); //다음프로시저에환승역이라고알려주어(환승)표시
}
else
{
++visitedNodeCount; // 총역개수를센다.
trackVisitedNodes(visitedNodes[id], false); //환승역이아니라면
path += \"→\" //그냥출력
if (isTransfer)
{ //환승일때
path += \"(환승)\" //환승표시
}
path += nodeNames[id] + \" \"
}
}
  • 가격8,400
  • 페이지수16페이지
  • 등록일2013.07.01
  • 저작시기2006.2
  • 파일형식한글(hwp)
  • 자료번호#854738
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니