• 파일시티 이벤트
  • LF몰 이벤트
  • 캠퍼스북
  • 서울좀비 이벤트
  • 탑툰 이벤트
  • 닥터피엘 이벤트
  • 아이템베이 이벤트
  • 아이템매니아 이벤트

[C언어] 최단시간 경로 문제 (몬테카를로 방법)

여우구슬
개인인증판매자스토어
최초 등록일
2007.06.02
최종 저작일
2007.05
6페이지/한글파일 한컴오피스
가격 2,000원 할인쿠폰받기
다운로드
장바구니

소개글

최단시간으로 갈 수 있는 경로를 몬테카를로 방법을 이용해 구한 예제입니다.
프로그램은 Microsoft Visual C++ 환경에서 작성했습니다.

목차

(1) 문제
영호는 바닷가를 지나다가 물에 빠진 사람을 발견하고 구하려고 한다. 영호와 조난자의 위치는 위 그림과 같고, 영호는 평지에서 8m/s, 백사장에서 4m/s 속력으로 달리고, 바다에서 2m/s 속력으로 헤엄친다고 한다. 이 때 영호가 조난자에게 가장 빨리 가는 경로를 구하라.

(2) 문제 분석
영호가 각 구간을 직선으로 달려간다면, 각 구간별 걸린 시간은

본문내용

(2) 프로그램


앞의 변분을 이용한 풀이에서는 인 점을 찾아내면(단, , 인 경우) 것으로 해를 구할 수 있지만 손으로 풀기가 쉽지 않다. 다음 프로그램에서는 몬테카를로 법으로 a,b를 0~100m 범위에서 무작위로 찍어 시간을 비교한다.
0~100m 범위의 모든 점들을 확인하는 것은 시간 낭비이므로 1차로 시간이 덜 걸리는 경로를 대충 얻고, 범위를 점점 좁혀가는 방법을 썼다. 범위를 좁혀가는 정도와 각 주기당 검사횟수를 잘 조절하는 것이 요령이다. 어느 정도 계산을 진행하면 double형 변수의 유효 자리수 한계에 부딪히게 된다.


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

const int Freq=(int)pow(10,5); // 한 주기당 검사 횟수

double ran(); // 0과 1 사이의 난수를 만드는 함수

void main()
{
double x_init=0, y_init=0; // 출발점
double ax,bx; // 난수로 만들 a,b
double ay=100, by=170; // 1,2 및 2,3 구간 경계선의 y좌표
double x_final=100,y_final=220; // 도착점

double l1,l2,l3; // 각 구간을 이동한 거리
double v1=8,v2=4,v3=2; // 각 구간에서의 속력
double t1,t2,t3; // 각 구간에서 걸린 시간
double t=1e+4; // 걸린 총 시간 (최소값 구하기 위해 초기값을 크게 잡아줌)

double t_a, t_b; // t_a, t_b : t를 a와 b로 편미분한 값
double partial_t; // partial_t = t_a+t_b (t의 도함수)

참고 자료

없음
여우구슬
판매자 유형Silver개인인증

주의사항

저작권 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우

이런 노하우도 있어요!더보기

최근 본 자료더보기
탑툰 이벤트
[C언어] 최단시간 경로 문제 (몬테카를로 방법)
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업