2. 과제수행일지
소속 조원
B2 조장 : 최수영 자료조사 : 강승우, 김남희 코딩 : 최완철, 김성진
과제수행기간 6.12~6.21
I. 계획의 작성
연구제목 사전
영어 텍스트 파일을 읽어서 사전을 검색하여 철자를 검색하는데, 철자를 검색하여 틀린 글자
연구배경
가 나오면 표시하고 Edit distance를 사용하여 가장 적절한 단어를 추천한다.
http://danamoni.tistory.com/193
참고자료 참고 URL
http://redwave102.blog.me/80074139499
II. 계획의 실행
첫째 날 2012년 6월 12일 화요일
오늘의 작업 프로젝트에 대한 이해와 업무 분담
토의 내용 역할을 분담하고, 이번 프로젝트를 어떻게 해결할지 토의하였다.
과제준비에서 이번에 해결해야할 프로젝트는 상당히 막막하였다. 그리고 회의록과 같은 기록을 남겨둔다
느낀 점 면 보고서를 쓸 때, 또는 과제 수행을 할 때 좀 더 편리하게 할 수 있다는 것을 느꼈다.
둘째 날 2012년 6월 14일 목요일
모두가 조사해온 것들을 종합하고 토의하며 어떤 방향으로 프로젝트를 완성해나갈지
오늘의 작업
생각해보았다.
Edit Distance
두 문자열간의 edit distance는 하나의 문자열을 다른 하나의 문자열로 변환하기 위해 요구
되어지는 연산의 수이다. 라고 정의되어 있다.
이때 필요한 연산의 수는 다음과 같이 정의가 된다.
변환(change), 삽입(insertion), 삭제(deletion) 3가지 연산이 필요하다.
예를 들어,
1. x: "abc" --> y:"abd"
x 문자열을 y 문자열로 변환하기 위해서는 마지막 문자 "c"를 "d"로 바꾸기만 하면 된다.
토의 내용
즉, change 라는 연산 한 번만 발생하기 때문에 x와 y의 거리는 1이다.
2. x: "park" --> y:"spake"
이 문제는 조금 애매하지 않은가? 어떻게 변환을 할지...
그러나, 조금만 생각해보면 x의 1번째 문자 앞에 y의 "s"를 삽입(insertion)하고,
x의 3번째 문자 "r"을 "k"로 변환하고, x의 5번째 문자 "k"를 "e"로 변환을 하면 된다.
1번의 삽입과 2번의 변환이 이루어졌으니, 거리는 3이다.
- p a r k
s p a k e
또 다른 방법으로, x:"p" -> y:"s", x:"a" ->y:"p", x:"r" -> y:"a", y:"e"를 x의 마지막 문
자로
삽입하는 경우도 가능하다. 이 경우는 3번의 변환과 1번의 삽입이 이루어졌으니,
3. 거리는 4가 된다.
p a r k -
s p a k e
위 2번 예제에서 최적의 거리는 3이다.
이것이 edit distance이다.
연속된 문자들 "- a"는 문자 'a'를 삽입(insertion)한다는 의미이며, "a -"는 'a'를 삭제
(deletion)한다는 의미이다. 즉, "- a"는 y의 문자가 "-"에 삽입되어져야 할 자리이며, "a
-"는 x의 문자를 삭제해야 한다는 의미이다. 변환(change)는 굳이 작성하지 않아도 된다.
어떻게 보면 x와 y의 문자들을 서로 교환을 해야 된다는 의미인데 굳이 표현할 필요는 없
다는 뜻도 된다.
위 2번 예제를 다시 보면,
- p a r k
s p a k e
--> 이것은 "-"의 자리에 y의 문자 's'가 들어올 자리이며, x의 'r', 'k'는 change의 자리라
는 의미이다.
결과
최종프로그램
소스
애초에 ‘어떻게 프로그램을 짤 것인가’를 고민할 때부터 상당히 어렵다는 것을 느꼈지만,
과제를 마치면서
결국은 프로그램을 만들지 못했다. C언어의 실력 향상이 필요하다는 것을 절실히 느끼게
느낀 점
되었다.