분류 전체보기 532

[알고리즘] 분할 정복 기법 (Divide - and - Conquer) - 1.일반론

1. 설계전략 ⓐ 분할(Divide) - 문제를 풀기 쉽도록 여러개의 작은 하위 문제들(Sub Problems)로 나눈다. ⓑ 정복(Conquer) - 더 작은 하위 문제들을 회귀적으로 푼다. ⓒ 통합(Merge) - 본 문제에 대한 답을 구하기 위해 하위 문제들의 답을 합친다. 2. 문제 : 배열의 최대 값과 최소 값 찾기 - 일반 해결법 ⓐ 배열의 값을 일일이 비교하며 최대값을 구한다. ⓑ 최대값을 제외한 모든 값을 비교하며 최소값을 구한다. > 효율 - 배열의 크기 : n - 비교 횟수 : n - 1 - 총 비교 횟수 : n-1(최대값 비교횟수) + n-2(최소값 비교횟수) = 2n - 3 - 분할 정복을 이용한 해결법 ⓐ 배열을 반으로 나눈다. ⓑ 양쪽 절반들의 최대값과 최소값을 구한다. ⓒ 배열..

[프로그래밍 언어론] 어휘 및 문법 분석 단계

1. 어휘 분석 단계(컴파일러 구성 중 제일 윗 단계) - 어휘를 문법적 의미가 있는 단위로 나눈다(lexeme과 token으로 나눠서 저장) ex) result = 10 * count + 1 2. 구문 분석(Parser를 이용한 Parsing 과정) - 파스 트리를 만들면서 구문을 분석하는 것으로 2가지 방법이 있다. > Top - down : start -> string // 대표 LL > Bottom-up : String -> start // 대표 LR - 토큰이 문법 순서에 맞게 들어오면 승인, 그렇지 않으면 오류를 발생해준다. - 대부분의 컴파일러는 Bottom-up방식을 따른다. ex) -> ac -> a|b 라는 문법을 가진 것에 aabc라는 사용자 입력이 있었다. 이것이 참인지를 보여라. ..

[알고리즘] 차수

1. 차수(Order) - 어떤 1차 시간(linear-time) 알고리즘이 어떤 2차 시간(quadratic-time) 알고리즘 보다 더 효율적이다. - 일반적으로 고차항이 시간 복잡도를 지배한다. ex) 주1 : 0.01n^2 >= 100n ( n >= 10,000) 주2 : n = 1,000,000 일때 0.01n^2과 0.01n^2+100n+10,000의 값은 거의 같다고 볼 수 있다. > 0.01n^2+100n+10,000에서 n^2의 항이 식을 지배함. 2. 큰(Big) O 표기법 - 정의 주어진 복잡도 함수 f(n)에 대해서 O(f(n))은 n>=N인 모든 정수 n에 대해서 g(n) 0)와 음이 아닌 정수 N이 존재하는 g(n)함수들의 집합이다. - g(n) ∈ O(f(n))이라면 우리는 g..

[프로그래밍 언어론] AGs(Attribute Grammars)

1. Context-Free(BNF/EBNF)의 한계 - 오류에 대한 처리는 어떻게 할 것인가? ( ex//각각 변수의 타입사이의 차이의 표현 ) - 변수는 사용하기 이전에 선언 되어야 되는데 표현이 가능할가? > 표현이 불가능하거나, 번거로운 것을 해결하기 위해 나온 것이 Attribute Grammars(AGs)이다. 2. AGs - 특징 ⓐ 문법의 표현에 속성(Attribute) 값이 추가가 되었다. > Synthesized Attribute : (Parse트리로 표현시)자식노드로부터 자신의 속성을 결정 자식노드의 평균 값, 최대/최소값 등 지정한 방법에 의해 속성을 자식으로부터 받는다. > Inherited Attribute : (Parse트리로 표현시)부모나 형제 노드로부터 자신의 속성을 결정 ..

[알고리즘] 알고리즘 설계와 분석의 예

문제 한 쌍의 토끼들은 한 달이 될 때에 한 쌍의 토끼를 낳고 두달이 될 때에 또 다른 한 쌍의 토끼를 낳는다. 내가 방금 한 쌍의 새로 태어난 토기들을 샀다면 지금부터 n번째 달에 몇 쌍의 토끼들이 태어날까? 주 : n이 주어지면 토끼 쌍들의 수를 구해야 한다. n은 매개 변수이다. f(n)을 지금부터 i 번째달에 태어난 토끼 쌍들의 수라고 하자. n 0 1 2 3 4 5 6 ... f(n) 1 1 2 3 5 8 13 ... > f(n) = f(n-1) + f(n-2) / f(0) = f(1) = 1 / n >= 2 (수학적 풀이) 점화식을 풀어서 "수학적"으로 해결 (알고리즘) f(n)을 구하는 알고리즘 설계 : 매개 변수 : n // 출력값 : f(n) ⓐ n이 0이면, f(n) = 1 ⓑ n이 1..

[프로그래밍 언어론] 모호함 / EBNF

룰을 통해서 문법을 생성함에 따라서 모호함이 발생한다. 이러한 모호함은 다음의 과정에 의해 지울수 있다. 일단 이전에 보았던 수학 기호에 대한 모호함이 발생 했을 시에 대해서 한번도 보고 가도록 하자. 1. 수학기호에 대한 모호함이 발생 수학기호에 대해서 모호함이 발생했을 때에는 수학기호를 우선순위에 의해서 나눠서 생각한다. 또한 우선순위가 낮은 것부터 정의를 하기 시작한다. 예를 들어 다음과 같은 문법이 존재한다고 한다. -> -> | -> * | / | - | + 이 연산식을 모호함을 없앤다고한다면 연산 우선순위를 나눠 본다. + - 와 / * 로 나뉘는데 이것중 + - 의 우선순위가 더욱 느리다. 따라서 다음과 같이 정의가 된다. -> - | + | -> * | / | 로 수정을 하여 모호함을 없앨..

[HTML 5.0] 새로 추가된 주요 태그들

어서오세요 피빛하늘블러그 소개 페이지에... 피빛하늘 블러그의 탄생... 피빛하늘 블러그는 2008년 2월 그냥... 취미로 만들어진 블러그 입니다. 처음에는 저의 개인적인 내용들이 올라오다가... 3월에 대학에 진학하게 되죠... 대학에서 배운 내용을 어딘가에 저장해놓고, 제 지식을 왠 만하면 다 올리고 싶어서 이렇게 발전하게 되었죠... 현 단계에서의 단순 계획... 이대로만 진행 되었으면 좋겠내요... 이 문서는2011년 09월 25일 에 작성되었습니다. abc123@zyx.com ------------------------------------------------------------------------------------------------- 새로 나온 주된 태그들입니다. 1. / - :..

[HTML 5.0] Semantic Element / Semantic Tag

1. header - 사이트 전체의 머리말 이나 블러그 포스트의 머리말이 된다(그냥 머리말이라고 생각해라) - img 태그를 사용하여 이미지를 넣거나, form 태그를 써서 검색으로도 사용 가능 - 사이트 전체의 머리말의 일반적 위치는 상단이나 왼쪽에 배치 - 와 다르게 여러개의 header가 올수 있다. 2. hgroup - 제목과 그에 해당하는 부제목을 묶어주는 태그 3. nav - html문서상에서 어느 부분이 정확히 네비게이션 위치인지 알기 쉽다. - header나 footer, aside 태그안에 정의 가능하며, 독립적으로 사용이 가능하다. - 즉, 위치 영향이 없다. 4. article - 웹 상의 실제 내용 - 다른 곳에 배포 가능한 내용을 담고 있다. 5. section - 콘텐츠 그룹을 ..

[HTML 5.0] HTML 4에서 5로의 진화...

1. HTML 5.0이란? - 마크업 언어(여러 플랫폼 환경에서 동일하게 적용되는 언어) / 개발 언어(HTML 5로 오면서 생긴 것) - 개발의도 > HTML 5.0 이전에는 웹 페이지에서 멀티미디어 콘텐츠를 구현하기 위해서는 Plug-in(플러그인)을 설치해야 함 > 이러한 것(플러그인)에서 자유로운 웹을 만들자는 것이 HTML5.0의 태동이 되었다. - 아직 정식 권고안이 나오지 않음(2012년 예정) - 웹 애플리케이션 2. 웹 애플리케이션이란? - 웹 자체가 하나의 애플리케이션 처럼 동작 - 웹 환경이 지원된다면, 어느한 플랫폼에서도 사용이 가능하고, 업데이트에 요으이 하다 - H/W장치를 현재는 사용이 불가능하다.(현재라는 단어에 주목! 차후 개발중) - 웹 애플리케이션의 반대 개념으로 네이티..

[프로그래밍 언어론] Parse tree와 모호함(Ambiguous)

1. Parse Tree - 파스트리 : 앞에 프로그래밍 언어 설명에 잠깐 소개가 되었다. - 간단히 파스트리의 특징에 대해서 알아보자 ⓐ 트리의 Leap에 속하는 것은 모두 사용자의 눈에 보이는 Terminal Symbol이다. ⓑ Leap속성을 제외한 모든 노드는 Non-Terminal Symbol이다. ⓒ 아래로 내려갈 수록 실행 순서가 빨라진다. - 이러한 파스트리는 컴파일러가 컴파일시 작성을 하여, Leap노드의 원소를 보아서 ⓐ 모두 Terminal Symbol이다. 라면 문법이 성립 ⓑ Non-Terminal Symbol이 하나라도 있다. 라면 문법이 성립하지 않음 을 정한다. 2. Ambiguous(Ambiguity 애매 모호함) - 어떠한 문법은 같은 형태의 식을 2가지 이상의 파스트리로..