탐색(Search)

 

1. 맹목적 탐색 (Blind search)

 

1) 깊이 우선 탐색 (Depth First Search : DFS)

시작하는 정점에서 출발해서 인접한 정점 중 아직 반문하지 않은 정점을 계속 찾아 방문하는 방법.

재귀 알고리즘을 이용해 쉽게 구현 가능하며 이 경우 스택(Stack)을 사용한다.

 

그래프 G

 

위와 같이 주어진 그래프 G가 있을 경우 DFS는 아래와 같이 방문하게 된다.

탐색은 A, B, D, H, E, C, F, G 순으로 이루어진다.

 

DFS의 결과

 

이 때, 방문 과정 중 인접한 모든 정점을 이미 탐색한 경우 가장 최근 방문했던 정점으로 돌아가는 것을 Back Tracking 라고 한다.

 

2) 너비 우선 탐색 (Breadth First Search : BFS)

시작점 A를 방문후 A에 인접한 모든 정점을 차례대로 방문 후 더 이상 방문할 정점이 없을 경우 인접한 정점 가운데 가장 처음에 방문한 정점에서 위와 같이 반복하는 과정이며, 레벨 단위로 이루어진다.

DFS와는 달리 큐(queue)를 사용하고 탐색은 A, B, C, D, E, F, G, H 순으로 이루어 진다.

 

BFS의 결과

 

 

2. 경험적 탐색 (Heuristic search)

경험적 탐색이란 실생활에서 예를 들자면 비가 온다는 날씨에 '우산을 가져간다', '가져가지 않는다' 라는 생각을 하는 것이 맹목적인 방법이며, 비의 형태를 경험해보고 '어느정도의 비는 맞아도 되겠다', '우산을 가져간다'라는 최적화 된 방향으로 생각하는 것이다. 간단하게 말하자면 어떤 문제를 탐색할 때 최소, 최대가 아닌 최적의 방법으로 탐색하는 것을 말한다. 

 

 

 


이번 ppt는 인터뷰 과제를 하면서 만들게 되었습니다.

따로 꾸민 것도 없고 거의 글씨체 하나로만 만들었네요. 피피티를 만드는 것보다 발표하는게 

너무 떨려서 어떻게 할 방법이 없네요. ㅠㅠ

그래서 발표할 일이 생기면 계속 부딪혀 보려고 합니다














발표자료_진로탐색인터뷰.pptx


저작권문제가 생긴다면 말씀주시면 바로 삭제하도록 하겠습니다.

 

carTest.java

 생성자를 사용한 코드를 만들면서 주석을 통해 정리해봤습니다.

 

 

 

Student.java

 

생성자(Constructor) : 클래스의 이름과 같지만 리턴 값은 없는 것.(메서드와 비슷하다.)

 

● 클래스메서드(static메서드)와 인스턴스매서드 예제

public class Test {
public static void main(String[] args) {
     int num1=3;
     int num2=4;
 
     Test.add(num1,num2);                          //생성하지 않아도 static메서드 사용가능
     //Test.product(num1,num2);                  //에러. 객체생성 후에만 호출 가능.
  
     Test c = new Test();                            //객체 생성
     c.product(num1, num1);                        //참조변수를 사용해 호출해야한다.
     }
 }
class Test{
    static int staticNum=7;
    int instanceNum = 8;
 
    //클래스 메서드
    static void add(int x, int y){
       int xx=x;                                            //지역변수
       int yy=y;
       System.out.println(xx+yy);
       System.out.println(staticNum);              //static변수를 사용해야한다.
       //System.out.println(instanceNum);      //에러. 클래스메서드에서 인스턴스변수 호출할 수 없음.
    }
    //인스턴스 메서드
    void product(int x, int y){
        System.out.println(x*y);
    }
}

 

이제 겨우 1학기 중간고사를 치고 너무 바쁜 한달이 지나가고 5월이 왔습니다.

이번 포스팅은 제가 발표했던 ppt 자료입니다. 혹시나 찾으시는분이 있을까 하고 올리게 되었습니다.


처음엔 과제 주제가 어떤 뜻인지 모르고 한참 고민하다가 간단한 프로그램 작성으로 ppt를 만들게 되었습니다.

ppt의 원래 디자인은 EZeeeee님께서 만드신 템플릿을 가져와 좋아하는 색과 아주 약간 변형하여서 만들게 되었습니다. 글을 많이 넣는것을 싫어해서 간단하게 사진만 들어가있고 내용은 발표로 모두 발표로 통해 (아직 발표능력은 많이 부족합니다..)


이산구조 피피티 자료.pptx


템플릿 원본 : EZeeeee님의 블로그 이동











1. if

구조 

 

if(조건식)

{

//조건식에 만족할 때 수행되는 문장.

}

else if(조건식2)

{

//조건식1이 만족하지 않을 때, 조건식2로 내려와 만족하면 수행되는 문장.

}

else

{

//생략이 가능하며, 위의 어느 조건도 만족하지 않을 때 수행되는 문장.

}

 

 

* equals 메소드

 

String str1 = new String("Hello");

String str2 = new String("Hello");

 

if(str1 == str2)                            // 주소값을 비교. false

if(str1.equals(str2))                    // 변수 안에 내용을 비교하는 메소드. true

if(str1.equalsIgnoreCase(str2))    // 변수안에 대소문자 가리지않고 내용만 확인. true

 

 

2. switch

구조

 

switch(조건식){

case 값1 :

// 조건식의 값이 값1과 같을 경우 실행.

break;    // 모두 실행하고 switch문을 빠져나오기 위함.

case 값2 :

// 조건식의 값이 값2과 같을 경우 실행.

break;

default :

// 위의 조건식에 일치하지 않을 때 실행.

 

※ case문의 값으로 변수를 사용할 수 없다.(리터럴, 상수만 가능)

 

* Math 클래스의 random() : 0.0과 1.0 사이의 범위에 속하는 하나의 double값을 반환하는 메소드.

 

 임의의 문자를 얻을 수 있도록 하는 예제.

0.0 <= Math.random() <1.0

 

0.0 * 26 <= Math.random() * 26 < 1.0 * 26

0.0 <= Math.random() * 26 < 26.0

출력하고자 하는 문자의 갯수 26을 각 변에 곱한다.

 

0.0 * 26 + 65 <= Math.random() * 26 + 65 <1.0 * 26 + 65

65.0 <= Math.random() * 26 + 65 < 91.0

아스키코드 65(A)부터 시작하므로 65를 각 변에 더한다.

 

(char)65.0 <= (char)Math.random() * 26 + 65 < (char)91.0

'A' <= (char)Math.random() * 26 + 65 < '['

문자로 형변환을 한다.

 

 

3. for

구조 

 

for(초기화 ; 조건식 ; 증감식){

// 조건식에 만족할 때 수행되는 문장.

// 순서 : 초기화 → 조건식 → for문 수행 → 증감식 조건식

// for문 안에 초기화에서 변수가 선언되면 for문 안에서만 사용가능하다.

//



4. do-while

구조 

 

do{

// 조건식에 만족할 때 수행되는 문장.

// 최소한 한번은 수행되는 반복문.

}while(조건식)



5. break, continue, Loop

break     : 사용되는 위치에서 가까운 반복문을 빠져나오는데 사용된다.

continue : 반복문의 끝으로 이동하여 다음 반복이 진행된다.

Loop      : 반복문 앞에 이름을 정해주고, break이나 continue에 같이 써줘 반복문을 벗어나거나 반복을 

   건너뛸  수 있게 한다.




이번 포스팅은 과제 준비를 하면서 ppt 만든 것과 안에 내용에 대해서 올리겠습니다.

멀티미디어의 규격은 많고도 많아서 저는 이미지의 압축방식중 jpeg와 gif에 대해서만 찾아봤습니다.

비록 뛰어나진 않지만 혹시나 저와 같은 주제로 공부하시는 분들께 도움이 되길 바랍니다.

사실.. 제가 주제에 맞게 조사했는지도 모르겠네요 :( 

주제에 어긋났다고 하더라도.. 이번 ppt를 통해서 규격에 대해서 참 많이 찾아보게 되었습니다....




변수란

하나의 값을 저장할 수 있는 공간.

 

변수의 선언

변수타입 변수이름;

char name;    // 문자형 변수 name을 선언한다.

변수의 이름(메서드, 클래스의 이름도 포함)을 선언할때, 대소문자 구분해야한다.

숫자로 시작하거나, 예약어를 사용하면 안 된다.

특수문자는 '_'와 '$'만 사용가능하다.

int num = 6 ;    // 선언후 변수의 값을 6으로 초기화 한다. 

 

변수의 타입과 크기

기본형(Primitive type) : boolean, char, byte, short, int, long, float, double

참조형(Reference type) : 기본형을 제외한 나머지 타입

 

 

1 byte

2 byte

4 byte

8 byte

논리형

boolean

문자형

char

(유니코드)

정수형

byte

short

int

(기본 자료형)

long

실수형

float

double

(기본 자료형)

 

데이터 타입

변수의 범위 

 기본값

크기 

boolean

true, false

 false

1 byte

byte

\u0000~\uffff (0~65,535)

 0

1 byte

char

-128~127

 '\u000'

2 byte

short

-32,768~32,767

 0

2 byte

int

-2,147,483,648~2,147,483,647

 0

4 byte

long

-9223372036854775808~9223372036854775807

 0L

8 byte

float

1.4E-45~3.4028235E38

 0.0f

4 byte

double

4.9E-324~1.7976931348623157E308

 0.0 또는 0.0d

8 byte

 

 

 

http://docs.xrath.com/java/se/6/docs/ko/

자바6 한글문서

http://docs.xrath.com/java/se/6/docs/ko/api/index.html

자바6 한글 API 문서

 

출처 http://xrath.com/java-api-docs-ko/

2015.01.29 추가

이번에  JAVA를 다시 설치하면서 환경변수가 자동으로 설정된다는 것을 알았다.

Path를 보니 c:\ProgramData\Oracle\Java\javapath 가 지정되어 있었고, 그 디렉토리 안에는 Java가 바로가기파일로 들어있었다. 앞으로는 따로 환경변수를 지정하지 않아도 될 듯하다.





환경변수

설명

Path

OS에서 명령어를 실행할 때 명령어를 찾아야 하는 폴더의 순위를 설정하는 환경 변수

CLASSPATH

JVM이 시작될 때 JVM의 클래스 로더는 이 환경 변수를 호출한다. 그래서 환경 변수에 설정되어 있는 디렉토리가 호출되면 그 디렉토리에 있는 클래스들을 먼저 JVM에 로드한다. 그러므로 CLASSPATH 환경 변수에는 필스 클래스들이 위치한 디렉토리를 등록하도록 한다.

JAVA_HOME

JDK가 설치된 홈 디렉토리를 설정하기 위한 환경 변수다. 반드시 필요한 환경 변수는 아니지만 Path와 CALLPATH 환경 변수에 값을 설정할 때 JAVA_HOME 환경 변수를 포함하여 설정한다.


환경 변수 설정하기

JDK 설치를 하고 환경 변수를 설정하는 방법이다. 환경 변수란 실행 파일이 모여있는 디렉토리 경로를 지정함으로써 어느 위치에서든지 사용할 수 있도록 하는 것이다. 먼저 윈도우에서 환경 변수를 설정하기 창을 실행시킨다. 방법은 아래와 같다.
아래의 아무것이나 한 가지 선택해서 환경 변수 설정 창을 실행 시킨다.
1. '제어판 → 모든 제어판 항목 → 시스템' 선택 후 '고급 시스템 설정' 클릭하고 고급 탭에서 '환경 변수' 클릭.
2. 내컴퓨터 오른쪽 클릭 후 속성 선택하고 고급 탭에서 '환경 변수' 클릭.

JAVA_HOME 추가하기


'새로 만들기' 선택 후 변수 이름은 'JAVA_HOME'이고 변수 값은 자신의 컴퓨터에 설치된 JAVA의 경로를 입력한다.

Path에 ;%JAVA_HOME%\bin 추가하기


시스템 변수 Path에 마지막에 ;%JAVA_HOME%\bin을 추가한다. Path를 삭제하거나 잘못 저장한다면 복잡해질 수 있으니 조심해야 한다.

CLASSPATH 추가하기


'새로 만들기' 선택 후 변수 이름은 'CLASSPATH'이고 변수 값은 자신의 컴퓨터에 설치된 %JAVA_HOME%\lib를 입력한다.


TEST 하기

java -verion, javac -version 은 Path에 추가 되었는지 확인하기 위함이고, echo %CLASSPATH% 는 CLASSPATH가 추가 되었는지 확인하기 위함이다.


컴파일하고 실행시에 "기본 클래스 을(를) 찾거나 로드 할 수 없습니다. 라는 에러메세지가 뜬다면 다음과 같이 실행시킨다.

java -classpath ".;lib" Helloworld

혹은 CLASSPATH의 변수 값을 다음과 같이 수정한다.

%JAVA_HOME%\lib\;.


˚ 행렬(Matrix)    n×m 

정의 : 실수를 n행, m열로 나열된 배열을 말한다.

1) 행렬의 스칼라 곱(Scalar Multiplication) : 행렬 A에 실수 k를 곱하는 연산

2) 행렬의 곱셈

 

˚ 행렬의 종류

1) 영행렬(Zero Matrix)    O

2) 2차 정사각행렬(n-square Matrix) : 행과 열이 같은 행렬

3) 대각행렬(Diagonal Matrix) : 정사각행렬에서 대각원소 이외의 모든 원소가 0인 행렬

4) 단위행렬(Unit Matix, Identity Matrix) : 대각행렬에서 대각원소가 모두 1인 행렬

5) 전치행렬(Transpose Matrix) 

: m × n 행렬의 행과 열을 바꾼 n × m 행렬

6) 대칭행렬(Symmetric Matrix) : 인 행렬

7) 부울행렬(Boolean Matrix, Zero-One Matrix) : 모든 원소가 0,1로 구성된 행렬

* 부울행렬 연산자

(1) 합(join) : A∨B=

(2) 교차(meet) : A∧B=

(3) 부울곱(boolean product) : A⊙B

* 부울행렬 연산의 특징

(1) A∨A=A, A∧A=A

(2) A∨B=B∨A , A∧B=B∧A

(3) (A∨B)∨C=A∨(B∨C)

(4) A∨(B∧C)=(A∨B)∧(A∨C)

 

˚ 행렬식(Determinant) |A| or det(A)

정의 : n차 정사각행렬에 대응하는 수를 구하는 식

1) 소행렬(Minor Matrix)

n차 정사각행렬에서 r번쨰 행과 s번째 열을 제거해서 얻은 (n-1)×(n-1)행렬

2) 소행렬식 det(A)

n차 정사각행렬의 소행렬 에 대한 행렬식

3) 여인수(Cofactor) , 여인수행렬(Cofactor Matrix)

n차 정사각행렬 에서 원소 에 관련된 수와 그 수들에 대한 행렬

4) 여인수를 이용한 행렬식

˚ 역행렬(Inverse Matrix) 

정사각행렬 A에 대해 AB=BA=I를 만족하는 행렬 B

1) 행렬식을 이용한 역행렬

2) 수반행렬

여인수행렬 에 대한 전치행렬

3) 가역행렬(Invertible Matrix 또는 Nonsingular Matrix)

역행렬이 존재하는 행렬

4) 특이행렬(Singular Matrix)

역행렬이 존재하지 않는 행렬

* 행렬식을 이용한 역행렬에서 의 분모가 0이 되면 특이행렬이 된다.

 

˚ 연립 1차 방정식(System at linear Equation) : 1차 방정식 m개로 구성된 방정식

1) 첨가행렬(Augmented Matrix)

2) 1차 방정식의 해를 구하는 방법

(1) 가우스 소거법(Gaussion Elimination)

① 가우스 소거법(Gaussion Elimination)

계수행렬의 대각원소들이 모두 1로 만들고, 대각원소를 기준으로 아래쪽 원소들은 모두 0으로 만든 후 위쪽 원소들은 계수들로 남겨놓은 형태의 첨가행렬

② 가우스 조르단 소서법(Gauss Jordan Elimination)

가우스행렬의 계수 부분을 단위행렬로 만들어 구하는 방법

 

 

 

 

 

˚ 수의 종류

복소수

 실수

유리수

정수

자연수 

(음의 정수, 0)

(무리수)

 (허수)

1) 자연수 N : 0보다 큰 정수

2) 정수 Z : 양의 정수, 0, 음의 정수로 구성된 수

3) 유리수 Q : 두 정수 a,b로 a/b(분수)의 꼴로 나타낸 수이며, b≠0 이고 b=1이면 정수가 된다. 

*하한항(lowset) : 분모와 분자 사이에 1 이외의 공약수가 존재하지 않는 유리수

4) 무리수 I : 실수 중 유리수가 아닌 수. a/b(b≠0)로 나타낼 수 없는 수.

5) 실수 R : 무리수와 유리수를 모두 포함하는 수.

6) 복소수 C : x² = -1을 포함하는 수 체계

 

˚ 수의 연산

1) 닫힘 성질

 

 +

 -

 ×

 ÷

 자연수 (N)

 O

 X

 O

 X

 정수 (Z)

 O

 O

 O

 X

 유리수 (Q)

 O

 O

 O

 O

 무리수 (I)

 X

 X

 X

 X

 실수 (R)

 O

 O

 O

 O

 복소수 (C)

 O

 O

 O

 O

2) 수의 특징

 x+y=y+x, xy=yx

 교환법칙 

 (x+y)+z=x+(y+z), (xy)z=x(yz)

 결합법칙

 x(y+z)=xy+xz

 분배법칙
 0  합에 대한 항등원
 1  곱에 대한 항등원
 -a  합에 대한 역
 1/a  곱에 대한 역

3) (시그마) : 일정한 규칙을 나열한 수를 더할 때 쓰는 기호

4) (프로덕트) : 일정한 규칙을 나열한 수를 곱할 때 쓰는 기호

5) 나머지 연산 : 정수 n을 d로 나누어 나오는 몫 q와 나머지 r이 있을때, r을 구하는 연산.

n mod d = r     n mod d = 0 ⇔ d|n

 

˚ 보수

1) 컴퓨터에서의 데이터 표현

 최상위 비트

부호비트

 데이터 비트

 데이터 비트

 데이터 비트

 데이터 비트

 데이터 비트

데이터 비트

 최하위 비트

데이터 비트

양수인 경우 부호비트가 0, 음수인 경우 1이 된다.

* 부호화-절대치 표현 : 부호와 데이터의 절댓값을 그대로 표현

1의 보수 : 음수 표현에만 사용 된다.

   2진법에 있어서 보수를 취할 때 각 자리의 반대수 (0→1, 1→0)를 취하는 보수.

2의 보수 : 음수 표현에만 사용되고, 절대치 비트에대한 1의 보수에 1을 더한다.

˚ 집합

집합이란? 영어 대문자(A, B, C, D, … )로 표기하며 어떤 조건들에 의해 분류되서 모인 요소들의 모임.

집합의 표기방식

1) 원소나열법 : 집합에 포함되는 원소를 일일이 나열하는 방법

ex) A={1,2,3,4}

2) 조건제시법 : 집합에 포함되는 원소의 공통적인 성질을 조건식으로 제시하는 방법

ex) A={x|x<5, x∈N}

집합과 원소의 포함관계 : 1 ∈ A 또는 5  A

기수(Cardinality) : 집합 A가 포함하는 원소의 수    |A| = 4

상등(Equal) : 두 개의 집합의 원소가 동일할 때 '상등'한다고 한다.    A=B⇔(a∈A∧a∈B)

 

˚ 집합의 종류

1) 전체집합(Universal Set) U : 논의 대상이 되는 원소 전체를 포함하는 집합

2) 공집합(Empty Set) { } or : 원소를 포함하지 않은 집합, ||=0

3) 부분집합(Subset) A⊆B : A의 모든 원소가 B에 포함되는 경우, |A||B|

4) 진부분집합(Proper Subset) A⊂B : B에 대하여 A의 요소 모두는 포함되어 있지 않은 부분 집합, |A|<|B|

 

˚ 집합의 연산

1) 합집합(Union) : 집합 A,B에 대하여 A에 속하거나 B에 속하는 원소로 되는 집합.

A∪B={x|x∈A∨x∈B}

2) 교집합(Intersection) : 집합 A,B에 대하여 A와 B에 동시에 속하는 원소로 되는 집합.

A∩B={x|x∈A∧x∈B}

3) 여집합 또는 보집합(Complement) : 전제집합에 속하지만 A를 제외 한 나머지.

A′={x|x∈U∧x∉A}=U-A

4) 차집합(Difference) : 집합 A,B에 대하여 A에 속하지만 B에 속하지 않는 집합.

A-B={x|x∈A∧x∉B}

5) 대칭차집합(Symmetric Difference) : 집합 A,B에 대하여 A-B 또는 B-A에 속하는 집합.

A⊕B={x|(x∈A∧x∉B)∨(x∈A∧x∉B)}={x|(x∈A-B)∨(x∈B-A)}

6) 서로소(Disjoint) : 집합 A,B에 대하여 공통으로 속하는 원소가 하나도 없는 경우.

A∩B=

 

˚집합의 대수법칙

집합

대수법칙

A∪∅=A,      A∩U=A

항등법칙(Identity Law)

A∪U=U,      A=

지배법칙(Domination Law)

A∪A=A,      A∩A=A

멱등법칙(Idempotent Law)

A∪B=B∪A, A∩B=B∩A

교환법칙(Communitive Law)

A∪(B∪C)=(A∪B)∪C

A∩(B∩C)=(A∩B)∩C

결합법칙(Associative Law)

A∪(B∩C)=(A∪B)∩(A∪C)

A∩(B∪C)=(A∩B)∪(A∩C)

A×(B∩C)=(A×B)∩(A×C)

A×(B∪C)=(A×B)∪(A×C)

분배법칙(Distribute Law)

(A′)′

이중 보법칙(Double negation Law)

A∪A′=U,      A∩A′=

′=U,          U′=

보법칙(Complement Law)

(A∪B)′=A′∩B′,  (A∩B)′=A′∪B′

드모르간의 법칙(De Morgan's Law)

A∪(A∩B)=A,   A∩(A∪B)=A

흡수법칙(Absorption Law)

* 흡수법칙 증명

A∪(A∩B) = (A∪∅)∩(A∪B)    항등법칙

  = A∪(∅∩B)            분배법칙

  = A∪∅                  지배법칙

  = A                        항등법칙

˚ 공리(Axion)

하나의 이론에서 증명 없이 참(T)이 되는 명제

ex) a=b면, a+c=b+c다.

˚ 정의(Definition)

 논의의 대상을 보편적인 것으로 하기 위해, 사용되는 용어 또는 기호의 의미를 확실하게 규정한 문장이나 식.

ex)한 내각의 크기가 직각인 삼각형을 직각삼각형이라 한다.

˚ 정리(Theorem)

공리와 정의를 통해 증명이 된 명제

ex) 피타고라스의 정리 : 직각삼각형은 빗변의 길이를 한 변으로 하는 정사각형의 넓이와

나머지 두 변의 길이를 각각 한변의 길이로 한 정사각형 두 개의 넓이의 합과 같다.

˚ 증명(proof)

어떤 명제가 참임을 확인하는 과정

 

˚ 직접증명법(Direct Proof)

명제를 변형하지 않고 함축명제 p→q가 T을 증명하는 방법이다.

예제) 모든 정수에 대해 짝수에서 홀수를 뺀 수가 홀수임을 증명하라.

풀이) p : x는 짝수다.

q : x에서 홀수 y를 뺀 수는 홀수다.

p→q : 짝수인 x에서 홀수인 y를 뺀 수는 홀수다.

정수 m,n이 있을 때, 짝수 x는 x=2m, 홀수 y는 y=2n+1 으로 표현할 수 있다.

x에서 y를 뺀 식을 표현하면 다음과 같다.

x - y = 2m - ( 2n + 1 ) = 2m - 2n - 1 = 2 ( m - n ) - 1

m-n을 변수 a로 치환하면, x-y=2a-1로 홀수가 된다.

∴ 명제 p→q "짝수인 x에서 홀수인 y를 뺀 수는 홀수다"는 참이다.

 

˚ 간접증명법(Indirect Proof)

직접 증명하지 않고, 간접으로 증명하는 방법으로, 대우증명법, 모순증명법, 반례증명법, 존재증명법이 있다.

1) 대우증명법(Proof by Conterposition)

함축명제 p→q와 ¬q→¬p가 동치임을 이용하여 증명하는 방법.

2) 모순증명법(Proof by Conteadiction)

함축명제 p→q와 ¬(p∧¬q)가 동치임을 이용하여 증명하는 방법.

3) 반례증명법(Proof by Counter-Example)

주어진 명제에 모순이 되는 예를 찾아 증명하는 방법.

4) 존재증명법(Existence Proof)

주어진 명제가 참이 되는 예를 찾아 증명하는 방법.

 

˚ 수학적 귀납법(Mathematical Induction)

자연수 n에 관한 명제 p(n)이 임의의 자연수에 대하여 만족하는 것을 세 단계의 과정으로 증명하는 방법이다.

1) 기본가정 : p(논의영역의 초깃값)가 성립한다.

2) 귀납가정 : 명제 p(k)가 성립한다면, p(k+1)도 성립한다고 가정한다.

3) 귀납단계 : 기본가정과 귀납가정을 이용해 p(n)이 성립함을 증명한다.

* 귀납이란? 여러 가지 특정 사실들로부터 일반적인 사실을 유도해내는 추론 방법

 

 


이산수학

저자
박주미 지음
출판사
한빛미디어 | 2011-08-29 출간
카테고리
컴퓨터/IT
책소개
논리적 사고를 높여주는 예제로 배우는『이산수학』. 컴퓨터 연산을...
가격비교

 

˚ 명제

1. 명제(Proposition)

참(Ture)인지 거짓(False)인지를 명확하게 판별할 수 있는 문장이나 수식 : p,q,r, …로 표현

 

2. 진릿값(Truth Value)

참이나 거짓을 가르키는 말 : 0, 1

 

3. 논리 연산자(명제의 결합)

1) NOT    부정(Negation) : 'not p' or 'p의 부정'

문장 p가 명제일 때 ~p, ¬p도 명제.

2) AND    논리곱(Conjunction) : 'p and q' or 'p 그리고 q'

p, q 모두 T 일 때 p∧q는 T

3) OR    논리합(Disjunction) : 'p or q', 'p 또는 q'

p, q 모두 F 일 때만 F, p∨q

4) XOR     배타적 논리합(Exclusive OR) : 'p  q'

p, q 진릿값이 하나만 T일 때 T, 그 외는 모두 F

 

4. 합성 명제(명제의 합성)

1) 합성명제(Compound Proposition)

하나 이상의 명제들이 논리 연산자를 이용해 결합된 명제.

 우선순위 

 논리 연산자

 1

 2

 3

 ¬

 ∨, ∧

 →, ↔ 

2) 항진명제(Toutology)     T

합성명제를 구성하는 명제의 진릿값에 상관없이 합성명제의 진릿값이 항상 T인 명제.

3) 모순명제(Contradicion)    F

합성명제를 구성하는 명제의 진릿값에 상관없이 합성명제의 진릿값이 항상 F인 명제.

4) 사건명제(Contingency)

항진명제도, 모순명제도 아닌 명제.

 

5. 함축(조건명제)

1)함축(Implication) / 조건명제(Conditional Proposition)    p→q

"비가 오면 우산을 가지고 간다."는 "비가 온다"라는 조건과 "우산을 가지고 간다"라는 결론이 된다.

이와 같이 조건과 결론의 관계로 결합된 형태를 함축, 조건명제라고 한다.

˚ p implies q : p는 q를 함축한다.

˚ if p then q 또는 p only if q : p면 q다.

*p가 T일 때 반드시 q가 T이면 "p is sufficient for q(p는 q의 충분조건이다)",

   "q is necessary for p(q는 p의 필요조건이다)"라고 하고 p⇒q로 표기한다.

[표] 함축 p→q의 진리표

 p 

 q 

 p→q 

T

T

F

F

T

F

T

F

T

F

T

T

 

2)쌍방조건명제(Biconditional) p↔q

p, q가 조건이면서 결론인 명제.

˚ p if and only of q : p면 q고, q면 p다.

* p⇒q와 같이 모두 T일 경우 p⇔q, q⇔p(q는 p의 필요충분조건)이다.

[표] 함축 p↔q의 진리표

 p 

 q 

 p↔q 

T

T

F

F

T

F

T

F

T

F

F

T

 

6. 역, 이, 대우

역(Converse) : p→q의 역은 q→p

이(Inverse) : p→q의 이는 ¬p→¬q

대우(Contraposition) : p→q의 대우는 ¬q→¬p

[표] 함축 p→q의 역, 이, 대우 진리표

p   q

p→q

q→p

¬p→¬q

¬q→¬p

T   T

T   F

F   T

F   F

T

F

T

T

T

T

F

T

T

T

F

T

T

F

T

T

 

˚ 논리적 동치

1. 명제와 논리적 동치

1) 논리적 동치(Logical Equivalence)    p≡q

p, q의 진릿값이 서로 같은 경우

"p와 q는 같다", "p와 q의 진릿값은 같다"라고 읽는다.

2) 논리적 동치법칙

논리적 동치 

법칙 

 p∧T≡p                 p∨F≡p

 항등법칙(Identity Law)

 p∧F≡F                 p∨T≡T

 지배법칙(Domination Law)

 p∧¬p=F               p∨¬p=T

 부정법칙(Negation Law)

 ¬(¬p)≡p

 이중 부정법칙(Double Negation Law)

 p∧p≡p                 p∨p≡p

 멱등법칙(Idempotent Law)

 p∧q≡q∧p            p∨q≡q∨p

 교환법칙(Commutative Law)

 (p∧q)∧r≡p∧(q∧r)

 (p∨q)∨r≡p∨(q∨r)

 결합법칙(Associative Law)

 p∨(q∧r)≡(p∨q)∧(p∨r)

 p∧(q∨r)≡(p∧q)∨(p∧r)

 분배법칙(Distributive Law)

 ¬(p∧q)≡¬p∨¬q

 ¬(p∨q)≡¬p∧¬q

 드모르간의 법칙(De Morgan's Law)

 p∧(p∨q)≡p         p∨(p∧q)≡p

 흡수법칙(Absorption Law)

 p→q≡¬p∨q

 함축법칙(Implication Law)

예제) 논리적 동치법칙을 이용해 합성명제 {p∧[¬(¬p∨q)]}∨(p∧q)≡p 가 동치임을 보여라.

풀이) {p∧[¬(¬p∨q)]}∨(p∧q)≡p

[p∧(¬(¬p)∧¬q)]∨(p∧q)≡p    드모르간의 법칙

[p∧(p∧¬q)]∨(p∧q)≡p    이중부정의 법칙

[(p∧p)∧¬q]∨(p∧q)≡p    결합법칙

(p∧¬q)∨(p∧q)≡p    멱등법칙

p∧(¬q∨q)≡p    분배법칙

p∧T≡p    부정법칙

p≡p    항등법칙

 

˚ 변수를 포함한 명제와 한정자

1. 명제함수

1) 명제함수(Propositional Function)    P(x)

논의영역 D에 속하는 변수 x를 포함하여 진릿값을 판별할 수 있는 문장.

2) 논의영역(Universe of Discourse)

명제에 포함된 변수 x가 속하게 될 범위

 

2. 한정자(Quantifier)

1) 전칭기호 or 전체한정자(Universal Quantifier)    ∀

논의영역에 속하는 모든 값을 의미

˚ 논의영역 U에 속하는 모든 x에 대해 명제 P(x)는 참 : ∀xP(x)

2) 존재기호 or 존재한정자(Existential Quantifier)    ∃

논의영역에 속하는 어떤 값을 의미

˚ 논의영역 U에 속하는 어떤 x에 대해 명제 p(x)는 참 : ∃xP(x)

 

예제) 다음 표현을 문장으로 서술하라.

(1) ¬(∀xP(x))    (2) ∃x(¬P(x))    (3) ∃x(∀yP(x,y))    (4) ∀x∀yP(x,y)

풀이)

(1) ¬(∀xP(x)) : 모든 x에 대해 P(x)를 만족하지 않는다.

(2) ∃x(¬P(x)) : P(x)가 성립하지 않는 어떤 x는 존재한다.

(3) ∃x(∀yP(x,y)) : 모든 y에 대해 P(x,)를 만족하는 어떤 x는 존재한다.

(4) ∀x∀yP(x,y) : 모든 x에 대해 모든 y가 P(x,y)를 만족한다.

 

˚ 논리

1. 논리와 추론

1) 추론(Inference)

기존의 명제들로부터 결과를 유도해 나가는 과정. 이때 명제들의 참값은 알고 있거나 가정된다

2) 가정 or 전제(Hypothesis), 결론(Conclusion)

근거가 되는 명제가 가정 또는 전제가 되고, 전제로부터 유도되는 명제를 결론이라 한다.

 

2. 정당한 추론(유효추론)

주어진 전제에 의해 유도된 결론이 T이면 "정당한 추론(유효추론)"이라 하고,

그렇지 않은 추론을 "부당한 추론(허위추론)"이라 한다.

 

3. 논리적 추론법칙

법칙 이름

추론법칙

항진명제

 논리곱

(Conjunction)

p

q

∴ p∧q

 없음

 선언적 부가

(Disjunctive Addition)

 p

∴ p∨q

 p→(p∨q)

 단순화

(Simplication)

p∧q

∴ p

(p∧q)→p

 긍정논법

(Modus Pnens)

p

p→q 

∴ q

[p∧(p→q)]→q

 부정논법

(Modus Tollens)

¬q

p→q

∴¬p

[¬q∧(p→q)]→¬p

 선언적 삼단논법 또는 소거

(Disjunctive Syllogism)

p∨q

¬p

∴q

[(p∨q)∧¬p]→q

 가설적 삼단논법 또는 추이

(Hypothetical Syllogism)

p→q

q→r

∴ p→r

[(p→q)∧(q→r)]→(p→r)

*항상 정당하기 때문에 어떠한 전제가 주어졌을 때 결론을 유도해내는 과정에서 사용할 수 있다.

 

+ Recent posts