Algorithm2008. 11. 28. 17:25
반응형
http://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95

학교 졸업후 이걸 쓰는 분이 많지 않은 지라 대부분의 직딩들은 기억이 나지 않을 것이다.
간단히 이야기 하자면, 두 자연수의 최대공약수(gcd) 를 구하는 알고리즘이다.
최대공약수까지 모르신다면...흠...고통스럽다...
어쨌거나...
알고리즘의 핵심은 두 자연수중 큰 수에서 작은 수를 나누어 "나머지"를 구하는 데 있다. 몫은 중요하지 않다.
mod  또는 % 연산 등이라고 할까나...'
그리고 이전 연산의 값중 작은 값을 얻어진 나머지로 다시 나누어 나머지를 구한다.
그리고... 이런 연산의 무한 반복이다...
단, 무한 반복은 항상 조건식이 있다!!
조건은 나머지가 0 (=zero) 이면 종료된다는 것....

def gcd(m,n):
   while n != 0:   
      t = m%n
      m = n
      n = t        
   return abs(m)

예를 들어 두 자연수 1071 과  1029 의  gcd 를 구해보자.
 
1단계) 1071 % 1029 = 42 (% 는 나머지 구하는 연산)
2단계) 1029  % 42 = 21
3단계) 42 % 21 = 0 (드디어 나머지가 0이다!!)

그러면, 이때  gcd 는 21 이다.
  

반응형
Posted by Jay Two
Algorithm2007. 9. 14. 13:56
반응형
반응형
Posted by Jay Two
Algorithm2007. 9. 14. 10:10
반응형
반응형

'Algorithm' 카테고리의 다른 글

유클리드 호제법  (1) 2008.11.28
문자열(string) 필수 기능  (0) 2007.09.14
과연 정렬 알고리즘을 몇 가지 이상 알아야 훌륭한 개발자인가?  (2) 2007.09.04
정팔각형과 계산...  (2) 2007.08.31
정팔각형  (0) 2007.07.06
Posted by Jay Two
Algorithm2007. 9. 4. 08:49
반응형
 인터넷에서 사원 면접 시 정렬 알고리즘에 대한 인터뷰를 하는 내용을 본 적이 있습니다.

 주 내용은 버블 소팅 정도의 내용만 알면 면접을 통과하기 어렵고

 알고 있는 알고리즘 갯수가 많으면 합격 공산이 커진다는 내용이었습니다. 


       그.런.데...


 과연 그런 것이 현실에서 얼마나 영향을 미치게 될 지 궁금합니다.

 항상 그렇듯 최적의 정렬이란 없습니다. 

 늑대인간을 한방에 날리는 은으로 만든 총알은 없어요.

 자료의 분포가 같은 자료는 우주에서 동일 번째의 수소 원자를 만나는 확률만큼 드물 것입니다. 


 그리고 현실적으로 업무의 특석상 최적보다는 빠른 공수의 결과를 원하는 프로젝트가 대다수입니다.

 최상의 결과가 나오는데 일년, 

 상업용으로 판매가능한 수준이 되는데 반년, 

 그럭저럭 돌아는 가는(?) 결과물이 나오는데 한달이 걸리는 업무를 생각해 봅시다.

 귀하가 경영진 또는 프로젝트 관리자라면 과연 항상 최적의 결과만을 선택할 수 있겠습니까?


 일년이 지나면 해당 개발 파트가 없어지거나, 회사가 망할 수도 있습니다.


 버블 소트로라도 데모 버전을 만들어 대주주나 투자자를 기쁘게 만들어야 할 수 도 있습니다.


  초기의 상용 인공지능 서비스는 갑갑할 정도로 저수준의 제품이 많았습니다. 하지만 기업들은 일단 만듭니다. 만들고 또 만들지언정 최적의 결과를 위하여 기다리지 않아요.


 

 물론 정렬에 대한 질문 등이 지원자의 소양 분석이라는 점을 크게 이해하는 바입니다. 

 하지만 X를 잘하는 사람을 찾으면 X만 잘하는 사람만 모입니다.

 (비슷한 이야기를 인터넷에서 본 적이 있을 수도 있습니다.)


fixed 18.4.13

반응형
Posted by Jay Two
Algorithm2007. 8. 31. 15:06
반응형



한변의 길이가 2x인 정팔각형이 있다. 또한 정팔각형에 접하는 정사각형의 한변의 길이가 D이다.
이때 x를 D값으로 표현하면 어떻게 되는가?

답은 아래에 흰 글씨로 적어둔다.

답 :
----------------------------------------------------------
 x = 1 / 2 * ( 1 + root(2) ) * D
 root(2) = 문자그대로 루트 2이다. 2의 1/2승
 * 는 곱하기를 의미한다.

----------------------------------------------------------






반응형
Posted by Jay Two
Algorithm2007. 7. 6. 17:25
반응형

사용자 삽입 이미지


오늘은 위와 같은 정팔각형의 x 값을 구하려고 하였다.
결론은 x = sqrt(2) / 4 * (지름)
그 결론을 찾으려고 괜히 c 값등의 엉뚱한 값을 자랑스럽게(?) 구하면서
시간을 보내 버렸다. 
 


반응형
Posted by Jay Two
Algorithm2007. 6. 25. 09:26
반응형
http://burstsort.sourceforge.net/


Burstsort 라이브러리

필자 : Stefan Webb
역자 : j2doll


동기

필자는 필자의 프로그램의 문자열을 정렬하는 가장 빠른 알고리즘을 원해 왔었다. 과학 저널을 찾아 본후, 필자는  Burstsort 와 그  다양성들로 결정하였다. 하지만 버스트소트의 프리 소스가 사용 가능한 구현이 없었으며, 그래서 필자가 직접 만들게 되었다.  


기술

Burstsort 는 캐쉬-아키텍처(cache-architectures)에서 문자열을 정렬하는 현재 가장 빠른 알고리즘이다.


1.0 버전의 소식 (2007년 5월 27일)

  •  이것은 최초의 릴리즈입니다.  그리고 작동은 하지만 제약 사항이 있습니다. 현재, 오직 26 개의 라틴 소문자로된 문자열들만 Bursttrie 에 사용 가능합니다.  차기 버전에서는 다영한 알파벳이 지원될 것입니다. the trie 를 위한 기억 장치 할당 전략은 효과 없을 지도 모릅니다.  필자는 구현 결과와 논문의 버스트소트에 대한 결과를 비교하지는 않았습니다.

다운로드

소스포쥐 프로젝트 페이지에서 다운롣하십시오 : http://www.sourceforge.net/projects/burstsort

라이센스

Burstsort 는 GPL 아래에 라이센스가 잇습니다. ( LGPL 은 아닙니다. )



------------------------------------------------------------------------------------------------------------------
[ 역자 궁시렁 ]
 소스는 visual c+ 로 작성되어 있습니다. (2005)
 그리고 제약 사양 그대로 문자열 구성은 소문자 알파벳 26 자만 사용해야 됩니다.
 그리고...차기 버전에는 다양한 문자열 뿐 아니라 한국어 등의 외국어 지원도 되었으면 하는
 강한 소망이...ㅎㅎ

반응형
Posted by Jay Two
Algorithm2007. 4. 11. 17:27
반응형
반응형
Posted by Jay Two