본문 바로가기

Contact English

연구과제(정보과학) Informatics Overview

 

2013 Informatics Research Report


소속 및 이름 : 1306  박정빈

지도교사 : 정웅열(purnagi)


1. 다음은 프랑스에서 실시한 고등학교 졸업 고사(2013)의 일부이다. 과학 영역(chap.4)의 Q3에 대한 자신의 견해를 논리적으로 서술하시오.


<A : 프랑스 고교 졸업고사 문항-과학영역>


4장 과학(Sciences)

Q1-생물학적 지식은 일체의 유기체를 기계로만 여기기를 요구하는가?

Q2-우리는 과학적으로 증명된 것만을 진리로 받아들여야 하는가?

Q3-계산, 그것은 생각(사유)한다는 것을 말하는 것인가?

Q4-무의식에 대한 과학은 가능한가?

Q5-오류는 진리를 발견하는 과정에서 어떤 역할을 하는가        

Q6-이론의 가치는 실제적 효용가치에 따라 가늠되는가?

Q7-과학의 용도는 어디에 있는가?

Q8-현실이 수학적 법칙에 따른다고 할 수 있는가?

Q9-기술이 인간조건을 바꿀 수 있는가?

Q10-지식은 종교적인 것이든 비종교적인 것이든 일체의 믿음을 배제하는가?

Q11-자연을 모델로 삼는 것이 어느 분야에서 가장 적합한가?


<B : 조건>


1) “지능”, “인간”, “기계”, “알고리즘”, 그리고 “문제해결”이라는 단어를 포함할 것.

2) 위의 1)에서 포함된 단어는 굵게(Bold) 표시할 것.

3) 논리적으로 서술하되 반드시 한 개 이상의 그림 또는 표를 첨부할 것.

4) 인용한 것(글, 그림, 표)에 대해서는 레퍼런스를 제시할 것.

5) 1000자 내외(900~1100자, 공백포함)로 논술하고, 마지막 문장 뒤에 글자수를 표시할 것.


<C : 논술>


지능을 가진 인간은 생각을 할 수 있다. 지능을 가진 인간은 생각이라는 알고리즘을 가진다. 그 알고리즘은, 새로운 정보를 받아들여 기억하는 연산과 기존의 기억으로 주어진 정보를 해석하는, 즉 연결하는 연산으로 구분된다.


우리가 칠판 위에 그려진 사과를 보고 빨간 사과를 떠올리는 까닭은, 우리가 빨간 사과의 이미지와 그 사과가 칠판 위에 그려지는 특징을 기억하고 있고, 칠판 위에 그려진 사과와 우리가 가진 정보가 일정 수준 이하의 오차를 가지며 연결되기 때문이다.


또한 습관은 기억된 수많은 상황 및 특정 행동 패턴을 토대로 처해진 상황을 연결하는 연산의 수행이고, 새로운 방법론은 기억된 여러 방법과 주어진 문제를 연결하는 연산인 것이다. 다른 배경 속에서 자란 두 인간은 서로를 이해하기 힘들고, 전혀 새로운 문제는 풀기 힘든 것도 같은 맥락이다.


    <1> <refered at my files>


우리에게 계산을 다루는 기계가 주어져 있다. 우리는 흔히 이 기계를 ‘계산기’라고 한다. 이것은 계산에 능숙하지만 되려 계산밖에 처리할 수 없다.


    <2> <refered at my files>

우리가 입력한 ‘1 + 1 = ?’은 계산기에 있어 주어진 정보라고 할 수 있다. 계산기는 각각의 기호의 의미를 기억하고 있고, ‘ + ’라는 일련의 연산 방법을 기억하고 있다. 제시된 정보는 그 기억과 연결되어 ‘ 2 ’라는 결과를 출력하게 된다.


    <3> <refered at my files>

          

계산기는 ‘1 × 1 + 1 = ?’에서 1 × 1을 우선적으로 처리해준 뒤, 이후에 ‘ 1 + 1 ‘을 처리해주었다. 따라서 여기에는 ‘새로운 정보를 기억’한다는 과정이 필연적으로 포함돼 있는 것을 알 수 있다.


이처럼 계산기가 계산한다는 것은 인간에게 있어 생각의 원리와 다름이 없다. 그러한 내용은 아래 그림을 통해 나타낼 수 있다. 여기서 사람을 계산기로 대체하면 생각에서 계산의 과정이 된다.


<refered at my files>

정리하면 계산과 사고는 같다. 단지 그런 언어가 사용되는 상황에서, 정보를 받아들이는 방식과 문제해결에 있어 생기는 복잡성의 차이로 달리 느껴진 것일 뿐이다.

(1094자)



2. 컴퓨터 시스템(메모리, 처리장치)의 구조와 처리에 관한 물음에 답하시오.



⑴ 위 그림의 메모리 구조(셀, 주소, 메모리 크기 등)에 대해 서술하시오.

① 셀의 용량은 두 16진수로 나타내어지므로 셀의 최대 용량은 28개이다.

② 셀의 주소도 두 16진수로 나타내어지므로 최대 셀의 개수 28개이다.

③ 주기억장치의 메모리 크기 = 28 × 28 bit = 28 bite = 256 bite = 256 B


⑵ 위 그림에서 작업의 처리 과정(메모리→제어기→연산기 등)을 순차적으로 서술하시오.

① 프로그램 카운터에서 주기억 장치를 거쳐 A0를 가져왔을 때, A1도 같이 오므로 이는 16 bit 단위로 메모리를 처리함을 알 수 있다. (총 4자리로 표현되는 네 개의 문자)

② 1번은 어떠한 연산을 처리할 것인지를 표시한다.

③ 5번은 더해야 할 레지스터(누산기)를 표시하고, 6C는 A1과 대응된다.



3. 프로그램과 프로세스에 관한 물음에 답하시오.



⑴ 프로그램의 의미를 파일과 폴더, 그리고 기억장치와 관련지어 설명하시오.

① 프로그램 : 사용자가 처리를 위해 컴퓨터에게 전달하고자 하는 명령과 데이터의 집합

② 파일 : 특정 명령과 데이터를 모아놓은 형태

③ 폴더 : 파일들을 모아놓은 것으로 사용자의 탐색속도를 높여주기 위함이다.


⑵ 프로세스의 의미를 프로그램, 기억장치, 그리고 운영체제와 관련지어 설명하시오.

사용자가 요청하여 주기억장치에서 실행되고 있는 프로그램이다. 모든 프로세스는 OS로부터 허락을 받게 되며 그것에 따라 실행 여부가 결정된다. 4번은 가장 먼저 실행되서 그 자리에 있는 OS의 영역을 침범해서 생긴 결과이다.


⑶ 불러오기, 저장하기의 의미를 파일, 프로그램, 기억장치, 운영체제와 관련지어 설명하시오.

① 불러오기 : 보조기억장치에 기억되어 있는 파일을 주기억장치로 끌어다 오는 것을 말한다.

② 저장 : 주기억장치에 저장되어 있는 프로세스를 보조기억장치에 기록하는 것을 말한다.



4. 다음 컴퓨터 시스템의 특성을 분석하시오.


구분

A

B

CPU

Quad-Core 2.0GHz, 32bit

Dual-Core 1.5GHz, 32bit

RAM

2GB

1GB

Storage

16/32GB

16/32/64GB

Extra Storage

Max. 64GB(Micro SD)

X

Display

5-inch AMOLED

4-inch IPS LCD

Resolution

1920*1080, 441ppi, 16:9

1136*640, 326ppi, 16:9

Interface

WiFi, LTE, NFC, Bluetooth

Direct-Wifi

WiFi, LTE, NFC, Bluetooth

OS

Android 4.2(Jelly Bean)

CUI, GUI, NUI, OUI(?)

Korean Speech Recognition

iOS-6

CUI, GUI, NUI

Korean Speech Recognition


⑴ 처리장치를 중심으로 두 기기의 성능을 분석하시오.

① A : 4*2GHz = 4*2Gcycle/sec = 4*2G*32bit/sec = 32GB/sec (32bit 같은 걸 대역폭이라고 함)

B : 2*1.5GHz = 2*1.5Gcycle/sec = 2*1.5 G*32bit/sec = 12GB/sec

(코어당 GHz가 같음)

② A가 B보다 약 2.7배 정도 더 빨리 처리 가능하다.


⑵ 기억장치를 중심으로 두 기기의 성능을 분석하시오.

① 주기억 장치 : A가 B보다 저장공간이 두 배 더 크다.  속도는 별반 차이가 없음을 알 수 있다.

② 보조기억 장치 : B가 A보다 최대 두 배 더 크다. 그러나 A는 보조기억 장치의 확장이 가능하므로 오히려 A가 1.5배 더 커진다.


⑶ 사용자 작업 환경(UI)을 중심으로 두 기기의 성능을 분석하시오.

① 서로 같은 인터페이스를 쓰고 있으므로 통신이 가능하다는 것을 알 수 있다.

② 문자(CUI), 그림(GUI), 음성(NUI) 기반의 OS를 공통적으로 사용하는 것으로 보아 그러한 대화 환경을 제공한다는 것을 알 수 있다. A에만 OUI만 있는 걸 봤을 때 flexible한 것도 추측 가능하다. 그 말인 즉, 누르면 들어간다거나 접힌다거나 하는 게 가능하다는 것이다.



5. 다음 로봇 프로그래밍 프로젝트를 해결하시오.



⑴ NXT 로봇의 성능에 대해 분석하고, 기능적 추상화와 보편 컴퓨터에 대해 간단히 서술하시오.

① NXT 로봇의 성능 분석


구분

Specification

Analysis

입력기능 I

Ultrasonic sensor

절대값으로 return

입력기능 II

Sound, Light sensor

상대값(%)으로 return

입력기능 III

Touch sensor

1 또는 0으로 return

기억기능

64 KB Ram, 256 KB Flash

각각 주기억, 보조기억

처리기능

CPU 성능 4 B/s

32 bit/cycle × 800 Mcycle/s

출력기능

LCD, 스피커, Motor

빛, 소리, motoe 출력

Motor의 값은 -100 ~ 100(%)

통신기능 I

Bluetooth

블루투스 호환 기기와 통신

통신기능 II

USB port

PC와의 통신이 가능


② 기능적 추상화와 보편 컴퓨터의 원리는 컴퓨터의 중요한 원리이다.

기능적 추상화를 먼저 소개하면, 기능적 추상화는 컴퓨팅(computing)이라는 총체적인 과정을 계층화, 추상화한 것을 말한다. 다시 말하자면, 컴퓨터는 H/W, OS, S/W, user의 기능적으로 구분된 네 단계로 나뉘어져 있고, 우리가 컴퓨터를 사용할 때 굳이 컴퓨터를 뜯어보지 않아도 사용될 수 있는, 각 계층의 기능의 추상화가 되어 있다는 것이다. 따라서 상위 계층은 하위 계층을 고려하지 않아도 제 일을 수행할 수 있다.

○ 한편, 보편 컴퓨터의 원리는 세상의 컴퓨터는 딱 한 가지의 종류로 되어 있다는 것, 즉 모든 컴퓨터가 서로 비슷한 원리를 사용하고 있다는 것이다. 따라서 우리가 로봇과 같은 다른 형태의 컴퓨터를 보아도 쉽게 이해할  수 있는 건 그 원리 또한 지금껏 사용해 온 컴퓨터와 다름이 없기 때문이다.


⑵ 다음을 참고하여 한반도 맵을 완주하는 라인트레이서의 SW를 설계하시오.

※ 조건

① 2개의 Light Sensor를 사용하여, 아래의 맵을 완주하시오.

② START 구역에서 출발하여, END 구역에 도착하면 정지하시오.

③ 로봇의 주행시간을 스스로 계측하고, LCD 화면에 표시하시오.


Source Code(C lang.)

#pragma config(Sensor, S1,     ts,             sensorTouch)

#pragma config(Sensor, S2,     rs,             sensorLightActive)

#pragma config(Sensor, S3,     ls,             sensorLightActive)

#pragma config(Sensor, S4,     us,             sensorSONAR)

#pragma config(Motor,  motorB,          mb,            tmotorNXT, PIDControl, encoder)

#pragma config(Motor,  motorC,          mc,            tmotorNXT, PIDControl, encoder)

//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//


task main()

{

motor[mb]=50;

motor[mc]=50;

wait1Msec(500);


ClearTimer(T1);

while(1)

{

if(SensorValue(ls)>50 && SensorValue(rs)>50)

{

motor[mb]=60;

motor[mc]=60;

}

else if(SensorValue(ls)<=50 && SensorValue(rs)>50)

           {

motor[mb]=-30;

motor[mc]=60;

 }

 else if(SensorValue(ls)>50 && SensorValue(rs)<=50)

{

motor[mb]=60;

motor[mc]=-30;

}


else

{

ClearTimer(T2);

while(SensorValue(ls)<=50 && SensorValue(rs)<=50)

{

motor[mb]=60;

motor[mc]=60;

}

if(time1[T2] > 250) break;

 }

}

motor[mb]=0;

motor[mc]=0;

wait1Msec(300);

motor[mb]=50;

motor[mc]=-50;

wait1Msec(300);

motor[mb]=50;

motor[mc]=50;

wait1Msec(1000);

while(1)

{

if(SensorValue(ls)>50 && SensorValue(rs)>50)

{

motor[mb]=60;

motor[mc]=60;

}

else if(SensorValue(ls)<=50 && SensorValue(rs)>50)

 {

motor[mb]=-30;

motor[mc]=60;

 }

 else if(SensorValue(ls)>50 && SensorValue(rs)<=50)

{

motor[mb]=60;

motor[mc]=-30;

}


else

{

ClearTimer(T2);

while(SensorValue(ls)<=50 && SensorValue(rs)<=50)

{

motor[mb]=60;

motor[mc]=60;

}

if(time1[T2] > 250) break;

 }

}

motor[mb]=0;

motor[mc]=0;

nxtDisplayTextLine(1, "%.3f sec", time1[T1]/1000.0);

wait1Msec(5000);

}


/* (a, b, c)'s meaning include 'a' for textline, 'b' for form of data, 'c' for the value of data, which is about 10^(-3) */



Algorithm

case. I

Non-cross course. 비교차 트레이싱


- 선을 따라 직선의 형태로 라인 트레이싱

- 두 선이 교차하지 않는 비교차 지역


i) 우측 광센서의 출력값이 낮을 경우 좌회전하도록 좌측 모터 출력값을 높임

: 출력값의 기준은 여러 시행착오를 통해 50 정도를 경계로 하는 것이 적절하다는 것을 앎, 이 경우 오른쪽 모터의 출력값은 -30, 왼쪽 모터의 출력값은 60으로 두었다.


ii) 좌측 광센서의 출력값이 낮을 경우 우회전하도록 우측 모터 출력값을 높임

: 출력값의 기준은 50이다. 이 경우 오른쪽 모터의 출력값은 60, 왼쪽 모터의 출력값은 -30으로 두었다.


iii) 우측, 좌측 모두 출력값이 높은 경우 두 모터의 출력값을 모두 60으로 둠


case. II

cross course 교차 트레이싱


- 좌우 광센서의 출력값이 모두 낮을 경우(기준 50)


i) 걸리는 시간이 충분하지 않는 경우

: 라인 트레이서가 좌우 출력값이 하나라도 높을 때까지 높아지는데 걸리는 시간이 짧은 경우로 군데군데 교차된 부위를 지날 때 이 경우에 속한다.

기본적인 원리는 case.I과 비슷하다.


ii) 걸리는 시간이 충분한 경우

: 걸리는 시간이 충분한 경우는 라인 트레이서가 중간에 두꺼운 부분에 올 때의 단 한 가지 경우이다. 이렇게 case.II는 이 경우를 포착하기 위해서다.


case. II-ii

- 회전한 뒤 일정 시간 동안 이동하여 다음 지점까지 이동한 뒤 트레이싱을 시작


##

우선 맵을 ‘출발선부터 두꺼운 점이 있는 중간지점’, ‘중간지점에서 다음 선으로 이루어지는 공백', ‘다음 선에서 도착지점'의 세 부분으로 나누었음을 밝힌다. 또, 회전을 수행할 때는 관성에 의한 효과를 억제하기 위해 잠시 멈춘뒤 자체 회전을 하고 일정 시간동안 가도록 코딩하였다.



## ROBOTC란?

ROBOTC에서 firmware

제한적인 역할의 OS

그 다운로드란?

각각의 로봇의 firmware가 다 달라서 한 것임

각각의 로봇의 하드웨어는 모두 같지만 app만 다름

용어도 다르고 (ultrasonic <-> sonar)

왜 firmware는 극도로 제한적일까?

window는 다양한 언어가 사용 가능

firmware 하나 당 하나의 언어

하드웨어의 용량이 작아서

최대한 펌웨어을 작게 만들어

사용자가 좀 더 넓게 쓰게

그래서 각각의 폄웨어마다 언어를 달리 함

standard  C[acc? anc?] : 표준 C언어를 만드는 기관

motor 등은 없음


펌웨어 다운로드 후 각각의 센서의 연결 상태

그래서 그걸 main 앞에 전처리 구문으로 표가

IDE는 그걸 쉽게 만드는 UI 제공


그 뒤 로봇 메뉴에 F5로 실행하면 PC에 다운로드,

로봇은 실행

그 실행된 건 다시 컴퓨터에 소스를 옮길 수 없음

test.c -> test.exe(C언어)

로봇은 후자

저장된 건 전자

그 화살표는 compile

역방향은 decompile

하지만 ROBOTC는

compile만 제공

compile도 안 하는 게 있음

예외처리(ex 변수 생성 시 초기값 0) 지원



⑶ PID(Proportional-Integral-Derivative) Control 알고리즘에 대해 조사하고, 이를 활용하여 위의 로봇을 개선하시오.

① PID 제어

제어란 시스템 전체가 효율적으로 가동될 수 있도록 자동 혹은 수동으로 조절되는 것이다.

여기서 제어 대상은 플랜트(plant; 식물)이고 출력은 제어량, 입력은 조작량, 외란은 외부의 영향을 말한다.


자동 제어의 종류에는 피드백 제어, PID 제어, ROOT LOCUS 등이 있다. 여기서 자동 제어는 외란에 관계없이 항상 정해진 일을 수행하는 폐루프제어, 외란에 따라 달리 행동하는 개루프제어가 있다. 그리고 PID 제어가 폐루프 제어에 속한다.

여기서 PID 제어란 실제 응용 분야에서 가장 많이 사용되는 메커니즘으로 비례(P), 적분(I), 미분(d) 제어의 세 가지 요소로 구성된다.


P 제어는 목표값과 자신의 상태값과의 차이(오차는 상태값-목표값)에 비례해서 목표값에 도달하기 위한 제어의 크기를 증가시키는 것이다. 그런데 P 제어는 이상적인 예측과 달리 제어량이 목표값에 근접할수록 목표값에 도달하는 것이 불가능하다. 이러한 불가능함을 잔류편차(offset)라고 한다.


I 제어는 그러한 잔류편차를 제거하기 위해 고안된 방식으로 P 제어와 같이 쓰는 게 일반적이다. 기본적인 원리는 처음부터 오차값을 누적해서 잔류편차를 없애주는 것이다. 잔류편차는 목표값보다 높거나 작은 상태가 지속될 때 주로 일어나는 일이기에 그럴 수 있는 것이다. 하지만 단점이 있다. 이는 정상적인 기능을 하는데 있어 걸리는 시간이 길어진다는 것이다. 이를 overshoot라고 하는데 처음부터 매우 불안정하게 움직이는 것을 볼 수 있다.


D 제어는 I 제어에서 생긴 overshoot를 줄이기 위해 고안된 방식으로 처음부터 매끄럽게 움직일 수 있다. P 제어와만 같이 쓰일 수도 있다. 이것의 원리는 계속해서 이전 오차값을 현재 상태값에서 빼주면서 변화율을 관찰하는데 있다. 여기서 미분이라는 말이 쓰인 것은 시스템의 가동시간이 매우 짧아 그 평균기울기가 마치 순간 기울기와 근사하기 때문이다.


이러한 PID 제어에서 각각의 상수값 KP, KI, KD가 있는데 이것이 주는 영향은 아래와 같다.

- KP 증가 : 도달시간 약간 변화 오버슛 증가 정상상태 오차 감소 안정성 하락

- KI 증가 : 도달시간 증가 오버슛 증가 정상상태 오차 제거 안정성 하락 (작아도 안정성 하락)

- KD 증가 : 도달 시간 감소 오버슛 감소 정상상태 오차 감소 안정성 하락


따라서 적절한 상수값이 중요한데 이에 ‘지글러 니콜슨 메소드’라는 방식이 있다. 이는 아래와 같다. KI = KP2 / 4KD




② 개선된 소스코드


Source Code(C lang.)

#pragma config(Sensor, S2,     rs,             sensorLightActive)

#pragma config(Sensor, S3,     ls,             sensorLightActive)

#pragma config(Motor,  motorA,           ,             tmotorNXT, openLoop)

#pragma config(Motor,  motorB,          mb,            tmotorNXT, PIDControl, encoder)

#pragma config(Motor,  motorC,          mc,            tmotorNXT, PIDControl, encoder)

//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//


task main()

{

float Kp=1.375, Kd=1000;

float Ki=Kp*Kp/(4*Kd);

//float Ki=0;

float error;

float lasterror=0;

float derivative,integral=0;

float tp = 50;

float offset=47;


while (1)

{

lasterror = error;

error = SensorValue(S3)-offset;

integral += error;

derivative = error-lasterror;

motor[mb] = tp + (Kp*error + Ki*integral + Kd*derivative);

motor[mc] = tp - (Kp*error + Ki*integral + Kd*derivative);

}

}


Algorithm

우선 지글러 메소드 및 시행착오를 통해 각각의 상수값을 정하였다.

그 뒤 각각의 변수 error, lasterror, 미분 변수, 적분 변수, 동작 변수, offset를 지정하였다.


여기서 무한 반복을 수행하는 반복문을 실행한다.

lasterror는 이전의 에러값을 저장한다.

error은 센서로부터 얻은 상태값에 목표값을 빼준 것이다.

그리고 여기서 I 제어에 해당하는 적분 변수에다가 error을 더해준다.

그리고 D 제어에 해당하는 미분 변수에다가 error을 이전의 lasterror을 빼준다.

그리고 각각의 모터에 PID 식을 적용하여 움직임을 제어한다.


궁극적으로 자신의 상태값이 목표값에 근접하게 된다.



6. 다음의 기계를 정의하고, 논리회로의 설계과정을 보이시오.

⑴ 전가산기(full adder)



① 전가산기(FA)란, 3 bit 입력(A, B, Ci)에 대한 2 bit 출력(Cout, S)를 계산하는 가산기이다. 그리고 전가산기는 기억 기능이 필요없는 조합논리회로이다. 이는 두 이진수의 덧셈에서 20보다 큰 자릿수의 덧셈을 담당한다. 32 bit cpm에서는 31개의 FA가 있다.

② 논리식 작성

Co = A’BCi + AB’Ci + ABCi’ + ABCi = Ci(A’B+AB’) + AB = Ci(A ⊕ B) +AB

S = A’B’ci + A’BCi’ + AB’Ci’ + ABCi = A’(B’Ci+BCi’) + A(B’Ci’ + BC) = A’(B ⊕ C) + A(B ⊕ C)’ = A ⊕ B ⊕ C



⑵ 반가산기(half adder)

① 반가산기(HA)란, 2비트 입력에 대한 합(S)과 올림수(C)를 출력해주는 기계로 HA(half adder)로 표시한다. 이는 두 이진수의 덧셈에서 20의 자리의 덧셈을 담당한다.

② 진리표 및 논리식 작성



C를 1인 상태가 C, 0인 상태가 C’(0)이라고 하면,

C = AB, C’ = A’B’ or A’B or AB’ = A’ + AB’ = (A’ + A)(A’ + B’) = A’ + B’, S = AB’ + A’B = A ⊕ B.

Out = S’1S’2A + S’S2B + S1S’2C + S1S2D이 된다.


⑶ 4*1 멀티플렉서(multiplexer)



① 4*1 멀티플렉서란, 2개의 제어신호로, 네 개의 데이터 중 하나를 선택하는 선택기를 말한다.

② 보다 일반적인 정의의 멀티플렉서란, n개의 스위치로 최대 2n개의 데이터 중 하나를 선택하는 선택기로 기억이 필요없는 조합논리회로이다.



⑷ 2*1 멀티플렉서(multiplexer)

① 2*1 멀티플렉서란, 1개의 스위치(제어신호, S)를 이용하여, 2개의 입력신호(A, B) 중 1개를 출력(Out)하는 조합논리회로를 말한다.

② 논리식 작성

Out = S’A + SB

진리표 작성하게 되면 간단하게  ‘0:A, 1:B’으로 나오게 된다.



⑸ 7-Segment



① 7-Segment란, 이진수를 십진수로 표현하는 방법으로 7-Segment display(SSD)에 의해 물리적으로 구현될 수 있다. 실제로 계산기나 디지털 시계의 표시 장치에 적용되는 원리이다.

② 진리표 및 논리식 작성 : 위에서 제시된 진리표는 과거에 수행했던 진리표와 달라 다소 차이가 있을 수 있습니다. 그 순서는 ABCDEFG와 CDGFEBA가 대응됩니다. (즉, 아래의 A가 위에서 C와 같고, 아래의 B가 위에서 D와 같습니다.)

A = XZ+X’Z’+W+Y = X⊙Z+W+Y

B = Y’Z’+YZ+W’X’+W = Y⊙Z+W’X’+W



C = Y’ + Z + X



D= (Y⊙Z)(X⊙W) + (Y⊕Z)(X⊕W) + W + YZ’



E = X’Z’ + YZ’ = (X’+Y)Z’



F = W⊕X + Y’Z’



G =  W’(X⊕Y) + YZ’ + W



H = 0


주어진 진리표를 바탕으로 각 부분에 대해 진리표로 정리하였다. 그 후 논리식을 세우면서 간소화를 진행했다. 간소화를 위해 쓰인 방법은 카르노맵과 인수분해이다.

논리회로 : 물리적 구현을 위한 가상적인 회로로서 아래와 같이 구현할 수 있었다.



⑷ 2bit 업카운터(up-counter with JK Flip-Flop)



① 2 bit 업카운터란, 위의 표대로 수행하는 카운터로서 마치 인진수를 어떤 인자(I)로 더해주어 출력되는 결과이다. 이는 출력을 다시 입력으로 끌어오는 렛치 구조가 필연적으로 요구되기에 기억이라는 과정이 필연적으로 요구된다. 정리하면 2 bit 업카운터는 순차논리회로이다. 이를 구현하는 기본적인 아이디어는 이진수의 각각의 자리를 각각의 JK 플립플롭이 담당하는 것이다.

② JK 플립플롭 : 순차논리회로를 처리하기 위해 쓰이는 가장 대표적인 렛치구조이다. 여기서 주의할 점은 JK 플립플롭은 어떠한 정의된 논리표의 구조라는 것이다.



③ 진리표 및 논리적 구현 : 여기서 A는 21 자리의 값, B는 20 자리의 값이라고 하자.



각각의 At, At+1이 위에서 Qt, Qt+1에 대응되는 것이고 각각의 At, At+1을 출력하는 JA, KA를 오른쪽에 기입한 것이다. 여기서 X는 "don't care" 조건이다.


JA = BtI



KA = BtI



JB = I



KB = I



위의 것을 토대로 구현을 하면 아래와 같다.



7. 인공지능 학습 이론


인공지능 학습 이론; Machine Learning Theory, Q-learning Algorithm

Q는 확률이다.

그렇게 메모리가 많이 안 들어간다고 한다.

문제 발견 → 문제 풀이

기계들이 인간들이 할 수 있는 걸 해낼 수 있느냐

모든 인간들이 그 행위를 할 수 있는가?

그것을 해내면 기계들이 지능을 가진다고 할 수 있는가?



입력: 2013.07.09 12:12