2023/12 5

카라츄바 곱셈(Karatsuba multiplication) 에 대한 어떤 생각

정수의 곱셈을 빨리하기 위한 방법 중의 하나로 기수법으로 표현된 정수를 여러 조각으로 분할하여 덧셈이나 뺄셈 회수는 몇회 증가하는 대신, 곱셈 횟수를 몇회 감소하는 방법입니다. 곱셈이 덧셈이나 뺄셈 보다는 시간이 많이 걸린다는 전제 하에 카라츄바 곱셈(Karatsuba multiplication)을 적용하면 시간복잡도 O(N**2) 의 계산 과정을 을 약 시간복잡도 O(N*&1.5)의 계산 과정으로 줄일 수 있습니다. (여기서 N은 기수법으로 표현된 정수의 분할 개수입니다.) 예를 들어 두 자리 십진법 수 23과 45의 곱셈 23*45을 생각해 봅니다. (이 경우 N = 2 입니다.) 2 3 x ) 4 5 ----------- 1 5 1 0 1 2 8 ----------- 1 0 3 5 위의 곱셈표에서 ..

무료로 싑게 쓰는 Small BASIC을 소개합니다.

Small BASIC은 Microsoft에서 제작 배포하는 BASIC 언어 인터프리터로서 편집기가 내장되어 있으며, 그래픽 기능도 있으며, Dot NET 4.5 환경에서 동작합니다. Small BASIC 홈페이지에서 다운로드하여 설치할 수 있으며, 풍부한 튜토리얼도 있습니다. Small BASIC을 설치하고, 처음 실행한 화면입니다. 다음의 딱 한줄 을 편집기에 쓰고 TextWindow.WriteLine("Hello World!") 파일 저장하고(파일 확장자가 sb로 저장됨), 실행 버튼 누르면 Hello World! 가 출력된 컨솔창이 뜹니다. 아래의 몇 줄을 입력하고 Turtle.Show() For i = 1 To 45 Turtle.Turn(8) Turtle.Move(10) EndFor 저장 버튼 누..

네가보나치(Negabonacci) 란

피보나치 수열이 0 이상의 정수 n에 대하여 선형점화공식(linear recurency): f(n) = f(n - 1) + f(n - 2) 과 과 초기조건(initial condition): f(0) = 0, f(1) = 1 로 정의된 수열인데 이를 음의 정수 n에 대하여도 위의 점화공식을 f(n) = f(n + 2) - f(n + 1) (∀ n = -1, -2, -3, -4, -5, ...) 로 고쳐 축차 적용하여 얻어지는 수열 f(-1), f(-2), f(-3), f(-4), f(-5), .... 을 네가보나치 수열(negabonacci sequence)이라고 한다. 즉, f(-1) = f(1) - f(0) = 1 - 0 = 1 f(-2) = f(0) - f(-1) = 0 - 1 = -1 f(-3) ..

피보나치 수(Fibonacci number)이란?

피보나치 수열는 피보나치가 토끼의 성장과 번식을 관찰하다가 발견한 수열이라고 합니다. 피보나치 수(Fibonacci number)의 정의는 간단합니다. 0과 1로 시작해서 덧셈을 계속 이어가면 얻어지는 수들입니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...... 초항을 제 0항으로 하고 제 0항, 제 1항, 제 2항, ...... 순으로 나열하면 F(0), F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(10), ...... 이 되고, 번호를 괄호 속에 넣지 않고 우측 첨자로 붙여 나열하면, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ...... 이 됩니다. 즉, F0 = F(0) = ..