이산수학

1,677 views
1,457 views

Published on

이산수학
1.4
1.5
1.6
박민욱

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,677
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

이산수학

  1. 1. 이산수학<br />박 민욱<br />
  2. 2. 1.4 술어 논리<br />
  3. 3. P1 ∧P2 ∧P3 ∧..... ∧Pn -> Q<br />타당한 논증이 되려면 <br /> - 논증의 내부 구조에 기초하여 P1, ..., Pn으로부터 Q가 논리적으로 유도 되어야한다.<br />
  4. 4. 술어 논리의 유도 규칙<br />
  5. 5. 예제25<br />술어 논리를 사용하여 논증의 타당성을 증명하라<br />(∀x)R(x) ∧ [(∀x)R(x) -> (∀x)S(x)] -> (∀x)S(x)<br />1. (∀x)R(x) hyp<br />2. (∀x)R(x) -> (∀x)S(x) hyp<br />3. (∀x)S(x) 1, 2 mp<br />
  6. 6. 전체 사례화 - ui<br />(∀x)P(x)로부터P(x), P(y), P(z), P(a)등을 유도 할수 있음을 말한다.<br />
  7. 7. 예제 26<br /> "모든 인간은 죽는다. 소크라테스는 인간이다. 따라서, 소크라테스도 죽는다.“<br /> H(x): x는 인간이다. <br /> s는 상수(소크라테스) 기호이다. <br /> M(x): x는 죽는다.<br />
  8. 8. (∀x)[H(x) -> M(x)] ∧ H(s) -> M(s)<br /> 1. (∀x)H(x) -> M(x) hyp<br /> 2. H(s) hyp<br /> 3. H(s) -> M(s) 1, ui<br /> 4. M(s) 2, 3, mp<br />
  9. 9. 존재 사례화 - ei<br />존재 한정사를 제거하는 것을 허용한다. <br />이것은(∃x)P(x)로부터 새로운 이름이거나 혹은 상수 기호이면 P(a), P(b), P(c), P등을<br />유도 할수 있음을 말한다.<br />
  10. 10. 예제 27<br /> 1. (∀x)[P(x) -> Q(x)] hyp<br /> 2. (∃x)P(y) hyp<br /> 3. P(a) 2, ei<br /> 4. P(a) -> Q(a) 1, ui<br /> 5. Q(a) 3, 4, mp<br />
  11. 11. 전체일반화 - ug<br />전체 일반화는 전체 한정사가 삽입되는 것을 허용한다. <br />
  12. 12. 예제 28<br /> (∀x)[P(x) -> Q(x)] ∧ (∀x)P(x) -> (∀x)Q(x)<br /> 1. (∀x)[P(x) -> Q(x)] hyp<br /> 2. (∀x)P(x) hyp<br /> 3. P(x) -> Q(X) 1, ui<br /> 4. P(x) 2, ui<br /> 5. Q(x) 3, 4, mp<br /> 6. (∀x)Q(x) 5, ug<br />
  13. 13. 전체 일반화에는 두개의 제약 사항들이 있다. <br />1. P(x) hyp<br />2. (∀x)P(x) 올바르지 않은 일반화; <br /><ul><li>x는 가설에서 자유 변수임</li></ul>자동차 도메인에서P(x)는 "x는 노란색이다."<br />
  14. 14. 1. (∀x)(∃y)Q(x, y) hyp<br /> 2. (∃y)Q(x, y) hyp<br /> 3. Q(x, t) 2, ei<br /> 4. (∀x)Q(x, t) <br /><ul><li>존재 사례화에 의해 추론되었다.</li></ul>(57p 참고) <br />
  15. 15. 존재 일반화 - eg<br />존재 한정사의 삽입을 허용한다. <br />
  16. 16. 예제 29<br /> (∀x)P(x) -> (∃x)P(x)를 증명하라<br /> 1. (∀x)P(x) hyp<br /> 2. P(x) 1, ui<br /> 3. (∃x)P(x) 2, eg<br /> (57p 참고)<br />
  17. 17. 규칙의 활용<br />존재 사례화의 부적절한 사용<br />1. (∃x)P(x) ∨ (∃x)Q(x) hyp<br />2. P(a) ∨ Q(a)<br />1. (∀x)(∃x)Q(x, y) hyp<br />2. (∀x)Q(x, a) <br />(57p 참고)<br />
  18. 18. 예제 30<br /> (∀x)[P(x) ∧ Q(x)] -> (∀x)P(x) ∧ (∀x)Q(x)<br /> 1. (∀x)[P(x) ∧ Q(x)] hyp<br /> 2. P(x) ∧ Q(x) 1, ui<br /> 3. P(x) 2, sim<br /> 4. Q(x) 2, sim<br /> 5. (∀x)P(x) 3, ug<br /> 6. (∀x)Q(x) 4, ug<br /> 7. (∀x)P(x) ∧ (∀x)Q(x) 5, 6, con<br />
  19. 19. 예제 31<br /> [P(x) -> (∀y)Q(x, y)] -> (∀y)[P(x) -> Q(x, y)]<br /> 1. P(x) -> (∀x)Q(x, y) hyp<br /> 2. P(x) temporary hyp<br /> 3. (∀x)Q(x, y) 1, 2, mp<br /> 4. Q(x, y) 3, ui<br />5. P(x) -> Q(x, y) temp. hyp discharged<br /> 6. (∀y)[P(x) -> Q(x, y)] 5, ug<br /> (59p 참고)<br />
  20. 20. 예제 32<br /> [(∃x)A(x)]' <-> (∀x)[A(x)]' <br />양방향에서 함의를 증명해야 한다.<br /> a. [(∃x)A(x)]' ->(∀x)[A(x)]'<br /> b. [(∀x)A(x)]' ->(∃x)[A(x)]'<br />
  21. 21. [(∃x)A(x)]' ->(∀x)[A(x)]‘<br /> 1. [(∃x)A(x)]' hyp<br /> 2. A(x) temporary hyp<br /> 3. (∃x)A(x) 2, eg<br /> 4. A(x) -> (∃x)A(x) temporary hyp discharged<br /> 5. [A(x)]' 1, 4, mt<br /> 6. (∀x)[A(x)]' 5, ug<br />
  22. 22. [(∀x)A(x)]' ->(∃x)[A(x)]‘<br /> 1. [(∀x)A(x)]' hyp<br /> 2. (∃x)A(x) temporary hyp<br /> 3. A(a) 2, ei<br /> 4. [A(a)]' 1, ui<br />5. [(∀X)[A(x)]']' 3, 4, inc<br /> 6. (∃x)A(x) -> [(∀X)[A(x)]']' temporary hyp discharged<br /> 7. [((∀X)[A(x)]')']' 1, dn<br /> 8. [(∃x)A(x)]' 6, 7, mt<br />
  23. 23. 예제33<br />wff(∀x)[P(x) ∨ Q(x)] -> (∃x)P(x) ∨ (∃x)Q(x) 타당한지 증명하거나 반증하라<br /> (∀x)[P(x) ∨ Q(x)] -> [[(∃x)P(x)]' -> (∀x)Q(x)]<br /> 1. (∀x)[P(x) ∨ Q(x)] hyp<br /> 2. [(∃x)P(x)]' hyp<br /> 3. (∀x)[P(x)]' 2, neg <- 어디서 굴러온놈?<br /> 4. [P(x)]' 3, ui<br /> 5. P(x) ∨ Q(x) 1, ui<br /> 6. [[P(x)]']' ∨ Q(x) 5, dn<br /> 7. [P(x)]' -> Q(x) 6, imp<br /> 8. Q(X) 4, 7, mp<br /> 9, (∀x)Q(x) 8, ug<br /> (61p참고)<br />
  24. 24. 예제 34<br />wff(∃x)P(x) ∧ (∃x)Q(x) -> (∃x)[P(x) ∧ Q(x)]<br /> 1. (∃x)P(x) hyp<br /> 2. (∃x)Q(x) hyp<br /> 3. P(a) 1, ei<br />(61p 볼것)<br />
  25. 25. 구두 논증<br /> verbal argumentation (말에 의한 논증)<br />
  26. 26. 예제 35<br /> "모든 컴퓨터는 직렬 인터페이스 포트를 가졌다. 어떤 마이크로 컴퓨터들은 병렬 포트를 가졌다. 따라서 어떤 마이크로 컴퓨터들은 직렬 포트와 병렬 포트 두가지를 다 갖는다.“<br /> M(x): x는 마이크로 컴퓨터이다.<br /> S(x) : x는 직렬 포트를 갖는다.<br /> P(x) : x는 병렬 포트를 갖는다. <br />
  27. 27. (∀x)[M(x) -> S(x)] ∧ (∃x)[M(x) ∧ P(x)] -> (∃x)[M(x) ∧ S(x) ∧ P(x)]<br />1. (∀x)[M(x) -> S(x)] hyp<br />2. (∃x)[M(x) ∧ P(x)] hyp<br />3. M(a) ∧ P(a) 2, ei<br />4. M(a) -> S(a) 1, ui<br />5. M(a) 3, sim<br />6. S(a) 4, 5, mp<br />7. M(a) ∧ P(a) ∧ S(a) 3, 6, con<br />8. M(a) ∧ S(a) ∧ P(a) 7, comm<br />9. (∃x)[M(x) ∧ S(x) ∧ P(x)] 8, eg<br />
  28. 28. 1.5 논리 프로그래밍<br />
  29. 29. PROLOG (Programming in Logic)<br /> eat(bear, fish)<br /> eat(bear, fox)<br /> eat(break, grass)<br /> animal(bear)<br />animal(fish)<br /> animal(fox)<br /> animal(deer)<br /> plant(grass)<br />
  30. 30. 예제 37<br /> is (animal (bear))<br />데이터 베이스에 있는지를 묻는다. <br />is (eat (deer, grass))<br /> yes<br /> is (eat (bear, rabit))<br /> no<br />
  31. 31. 예제 38<br /> which (x: eat (bear, x))<br /> fish<br /> fox<br />
  32. 32. Horn 절과 논리 융합<br /> E(b, fi)<br /> E(b , fo)<br /> E(d, g)<br /> A(b)<br /> A(fi)<br /> A(fo)<br /> A(d)<br /> P(g)<br /> E(y, x) ∧ A(x) -> Pr(x)<br /> y가 x를 먹고 x는 동물이면 x는 먹이다.<br />
  33. 33. Horn절은 술어와 혹은 술어의 부정이 논리합으로 결합되어 있는 wff를 말한다.<br /> [E(y, x)]’ ∨ [A(x)]’ ∨ Pr(x)<br />드모르간 법칙<br />[E(y, x)] ∧ [A(x)]’∨ Pr(x)<br />동치관계<br /> E(y, x) ∧ A(x) -> Pr(x) <br />
  34. 34. 예제 39<br /> Eat(beer, fish)<br /> Eat(fish, little-fish)<br /> Eat(little-fish, algae)<br /> Eat(raccoon, fish)<br /> Eat(bear, raccoon)<br /> Eat(bear, fox)<br /> Eat(fox, rabbit)<br /> Eat(rabbit, grass)<br /> Eat(bear, deer)<br /> Eat(deer, grass)<br /> Eat(wildcat, deer)<br /> Animal(beer)<br /> Animal(fish)<br /> Animal(little-fish)<br /> Animal(raccoon)<br /> Animal(fox)<br /> Animal(rabbit)<br /> Animal(deer)<br /> Animal(wildcat)<br /> Animal(grass)<br /> Animal(algae)<br /> Prey(x) if eat(y, x) and animal(x)<br />
  35. 35. is(animal(rabbit))<br /> yes<br /> is(eat(wildcat, grass))<br /> no<br /> which(x: eat (x, fish))<br /> bear<br /> raccoon<br /> which(x, y: eat(x, y) and plant(y))<br /> little-fish algae<br /> rabbit grass<br /> deer grass<br /> which(x:prey(x))<br /> fish<br /> little-fish<br /> fish<br /> raccoon<br /> fox<br /> rabbit<br /> deer<br /> deer<br />
  36. 36. 재귀<br />예제 39의 생태학 데이터베이스에서<br />“y는 x의 먹이 사슬에 있다.” In-food-chain(x, y)<br />x가 y를 직접적으로 먹는다.<br />X가 어떤 거을 먹고 그것은 어떤 것을 먹고 그것은 어떤것을 먹고…. 그거은y를 먹는다.<br />다시 말하면<br />2’. X는 z를 먹고 y는 z의먹이 사슬에 있다.<br />
  37. 37. 먹이 사슬에 대해 Prolog 규칙은<br />In-food-chain(x, y) if eat(x, y)<br />In-food-chain(x, y) if eat(x, z) and in-food-chain(z, y)<br />
  38. 38. 예제 40<br /> Which (y: in-food-chain (bear, y))<br />1. Fish<br /> 2. Raccoon<br /> 3. Fox<br /> 4. Deer<br /> 5. Little-fish<br /> 6. Algae<br /> 7. Fish<br /> 8. Little-fish<br /> 9. Algae<br /> 10. Rabbit<br />11. Grass<br /> 12. Grass<br /> <br /> In-food-chain (bear, y) if eat(bear, y)<br />
  39. 39. 1 부터 4까지는바로 얻어낼수 있다.<br />재귀적 경우로 이동하면,<br /> in-food-chain(bear, y) if eat(bear, z) and in-food-chain(z, y)<br />z를 “fish”일 때 재귀가 발생한다.<br />(75p참고)<br />
  40. 40. Bear fish<br /> Bearraccoon <br /> Bear fox<br /> Bear deer<br /> Bear fish<br /> |<br /> Fish little-fish<br />|<br /> Little-fish algae<br />
  41. 41. 1.6 정확성의 증명<br />
  42. 42. 단언<br /> {Q}P{R}<br />영국의 컴퓨터 과학자 안쏘니호아레에 의해 이름지어진Hoare 삼중쌍이라고 한다.<br /> Q : 사전 조건<br /> R : 사후 조건<br />
  43. 43. Q, R1, R2,…..Rn = R 일때<br /> {Q}<br />S0<br /> {R1}<br />S1<br /> {R2}<br />…<br />Sn-1<br /> {R}<br />
  44. 44. 예제 41<br /> {x - 1 > 0}<br /> x= x – 1<br /> {x > 0}<br /> <br /> {x -1 > 0}x = x – 1{x > 0}<br />
  45. 45. 예제 42<br /> {x – 1 > 0}<br /> X = x – 1<br /> {x > 0}<br /> {x -1 > 0}x = x – 1{x > 0}<br />에서 사후 조건은 x > 0이다. <br />사후 조건을 통해 x – 1을 x로 치환하면<br />사전 조건은 X – 1 > 0 또는 x > 1이 된다.<br />
  46. 46. 예제 43<br /> X와 y의 교환하는 다음 프로그램 세그먼트의 정확성을 검증하라<br /> Temp = x<br /> X = y<br /> Y = temp<br />
  47. 47. {y = 1b, x = a}<br /> Temp = x<br /> {y = b, temp = a}<br /> X = y<br /> {x = b, temp = a}<br /> Y = temp<br /> {x = b, y = a}<br />
  48. 48. 조건부 규칙<br />조건부 서술(conditional statement)<br /> If condition B then<br /> P1<br /> else<br /> P2<br /> End if<br />
  49. 49. 예제 45<br /> {n = 5}<br /> If n >= 10 then<br /> Y = 100<br /> Else<br /> Y = n + 1<br /> End if<br /> {y = 6}<br />{n = 5 그리고 n < 10} y = n + 1 {y = 6}<br />
  50. 50. 예제 46<br /> Max(x, y) 두개의 값 x와 y중 최대값을 구하는 다음의 프로그램 세그먼트의 정확성을 검증하라<br /> {x != y}<br /> If x > y then<br /> Max = x<br /> Else<br /> Max = y<br /> End if<br />
  51. 51. {x != y and x >= y} max = x {(x > y and max = x) or (x < y and max = y)}<br /> {x != y and x < y} max = y {(x > y and max = x) or (x < y and max = y)}<br /> (x > y ∧ x = x) ∨ (x < y ∧ x = y)<br />두번째 논리합은 항상 거짓이기 때문에 이것은 (x > y ∧ x = x) 와 동치이다. <br />
  52. 52. end<br />

×