'Study..'에 해당되는 글 80건

  1. 2007.10.03 NP problem
  2. 2007.09.29 Router, zebra, 코요테

NP problem

Study../etcs.. 2007. 10. 3. 22:04

 속도를 분석할 때 n 이라는 변수에 붙은 지수가 1 이나 2 처럼 미리 정해진 값, 즉 상수(constant) 로 표현되는 경우에는 그 알고리즘을 '쉬운' 문제라고 간주한다. 지수의 값이 아무리 크다고 해도 그것이 미리 정해진 상수 값이라면 그 알고리즘은 컴퓨터가 적당한 시간 안에 계산해 낼 수 있는 쉬운 알고리즘에 해당하는 것이다. 이렇게 변수 위에 붙은 지수가 미리 정해진 상수인 수학 공식을 우리는 다항식 (polynomial) 이라고 부른다.

ex)2n³ x n² - 3 


 복잡성 이론에서 다항식의 반대말은 '지수 함수(exponential function)'다. 지수함수란 변수 위에 붙은 지수가 미리 정해져 있는 상수 값이 아니라 그 자신도 변수로 표현되는 함수를 의미한다.

ex)2^n, 3^n

 복잡성(Complexity) 이론에서는 알고리즘의 속도가 다항식으로 표현되는 문제들을 묶어서 'P'라고 부르고, 다항식으로 표현될 수 있는지 여부가 알려지지 않은 문제들을 묶어서 'NP'라고 부른다. 여기서 P는 polynomial(다항식)의 머리 글자고, NP는 nondeterministic polynomial(비결정성 다항식)의 머리 글자를 의미한다.


 이 때 NP가 none-polynomial(비다항식)을 의미하지 않는다는 사실에 유의할 필요가 있다. 다항식이 아니라는 사실과 다항식으로 표현되는지 여부가 아직 알려지지 않았다는 사실 사이에는 엄청난 차이가 존재하기 때문이다. 다항식으로 표현되는 알고리즘은 오늘날의 컴퓨터가 적당한 시간 내에 해결할 수 있는 문제기 때문에 P에 속한 문제들은 '쉬운' 문제들이고, NP는 그와 반대로 '어려운' 문제를 의미한다.


 'NP-hard'라고 불리는 문제들은 세일즈맨의 여행 문제처럼 모든 경우의 수를 전부 확인해보는 방법 이외에는 정확한 답을 구할 수 있는 뾰족한 수가 없는 문제들을 뜻한다.


 어떤 문제가 NP에 속하면서 즉, 다항식으로 표현될 수 있는지 여부가 알려지지 않았으면서 동시에 NP-hard에 속한다면, 즉 '무식한 힘'의 방법 말고 다른 절묘한 알고리즘이 알려져 있지 않다면 그 문제는 'NPC(NP-complete) 문제'라고 부른다.


 컴퓨터 학자들과 프로그래머들은 대개 NP 완전 문제를 실용적인 관점에서 해결하기 위해서 진짜 정답을 찾기를 포기하는 대신 훨씬 적은 양의 계산을 통해서 정답에 가까운 값을 찾는 데 만족한다. 이러한 알고리즘은 근사 알고리즘(approximation algorithm) 혹은 발견적 알고리즘(heuristic algorithm)이라고 부른다. MST, 탐욕적 알고리즘, 평면 절단 방법 등은 모두 이러한 알고리즘의 예인데, 실전 프로그래밍의 세계에서는 이러한 근사 알고리즘이 생각보다 많이 사용된다.


 복잡성 문제를 연구하는 학자들에게 가장 어려운 질문중의 하나는 바로 "NP에 속하는 문제들이 궁극적으로는 모두 다항식, 즉 쉬운 알고리즘을 이용해서 해결될 수 있을까?" 라는 질문이다. 만약 그렇다면 NP 에 속한 문제나 P 에 속한 문제가 모두 종국에는 다항식으로 표현되기 때문에 'P = NP' 라는 등식이 성립하게 될 것이다. 하지만 NP 에 속하는 문제가 모두 다항식으로 해결될 수 있을지 여부를 파악하거나 증명하는 것이 너무나 어렵기 때문에 이 등식은 아직도 완전하게 입증되지 않은 어려운 명제증의 하나로 통하고 있다.


 

출처 : http://www.aistudy.co.kr/computer/p_np.htm

Posted by Yoons...
,

1. router

출처 : 네이놈 백과
http://100.naver.com/100.nhn?docid=719187

요약
랜(LAN:근거리통신망)을 연결해주는 장치로서, 보내지는 송신정보에서 수신처 주소를 읽고 가장 적절한 통신통로를 지정하고, 다른 통신망으로 전송하는 장치를 말한다. 유지보수가 용이하고, 대규모 통신망을 쉽게 구성할 수 있으며, 다양한 경로를 따라 통신량을 분산시킬 수 있다.
 

본문
랜을 연결하여 정보를 주고 받을 때 송신정보(패킷:packet)에 담긴 수신처의 주소를 읽고 가장 적절한 통신통로를 이용하여 다른 통신망으로 전송하는 장치이다. 인터넷을 접속할 때는 반드시 필요한 장비로서, 서로 다른 프로토콜로 운영하는 통신망에서 정보를 전송하기 위해 경로를 설정하는 역할을 제공하는 핵심적인 통신장비이다.

단순히 통신망을 연결해주는 브리지(bridge) 기능에 추가하여 경로 배정표에 따라 다른 통신망을 인식하여 경로를 배정하며, 수신된 패킷에 의하여 다른 통신망 또는 자신이 연결되어 있는 통신망 내의 수신처(노드)를 결정하여 여러 경로 중 가장 효율적인 경로를 선택하여 패킷을 보낸다. 통신 흐름을 제어하며 통신망 내부에 여러 보조 통신망을 구성하는 등의 다양한 통신망 관리기능을 수행한다.

장점은 통신환경의 설정을 가능하게 하여 관리 방침에 따라 라우팅 방식을 결정하여 전체 네트워크의 성능을 개선할 수 있다. 또한 표준 논리에 따라 통신방법이 자동으로 결정되므로 유지보수가 용이하고, 통신방법에 구애받지 않으므로 대규모 통신망을 쉽게 구성할 수 있으며, 다양한 경로를 따라 통신량(트래픽:traffic)을 분산할 수 있다.

초기 환경설정이 어렵고, 특정한 프로토콜에 의존하므로 다양한 프로토콜 지원이 어려우며, 하위 프로토콜 지원이 불가능하고, 기능이 복잡하므로 가격이 비싸다는 단점이 있다. 


2. zebra
출처 : http://webdizen.new21.net/blog/entry/리눅스에-네트워크-라우터-구현하기
       http://www.zebra.org/what.html
       http://blog.naver.com/sunkwarch?Redirect=Log&logNo=60017408009


GNU Zebra 는 GNU project 의 일부로서 발행되었으며, GNU GPL(GNU General Public License) 하에 배포되고 있다.
Zebra는 TCP/IP 라우팅 소프트웨어로서 BGP-4, BGP-4+, OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng를 지원한다. 리눅스는 물론 유닉스 계열 머신에서도 실행된다.

원래의 Zebra 패키지는 1966년에 Kunihiro Ishiguro와 Yoshinari Yoshikawa가 작성했다. 요즘 이 패키지는 IP Infusion이 관리하고 있고 네트워킹 엔지니어와 오픈 소스 자원자들이 도움을 주고있다.

Zebra의 유용한 기능중 하나는 Cisco IOS (Internetworking Operating System) 설정 포맷과의 긴밀한 유사성이다. IOS와는 약간 차이점이 있지만 IOS에 익숙한 네트워크 엔지니어가 이 환경에 안정감을 느낄 정도로 유사하다.

Zebra 의 유연하고 독특한 구성은 강력하여서 Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Border Gateway Protocol (BGP) 등의 라우팅 프로토콜을 각각 핸들 할 수 있다.


3. 코요테

출처 : http://en.wikipedia.org/wiki/Coyote_Linux

코요테 리눅스는 매우 작은 Linux 라우터로서, OS 와 방화벽/라우터를 위한 필수 서비스를 포함하며 하나의 IP 로 많은 컴퓨터가 공유할 수 있는 쉬운 NAT 공유방법을 포함한다. 1.44MB 의 디스켓 한장에 저장될 수 있으며, 486DX 이상의 CPU 와 최소 8MB 이상의 RAM 을 필요로 한다. 콘솔이나 SSH나 웹브라우져를 이용하여 관리가 가능하다.

출처 : http://moonc.dnip.net/tt/69

코요테 리눅스란 리눅스 라우터용 운영체제로서, 구형 컴퓨터를 라우터로 이용할 수가 있습니다.
플로피 디스켓 하나로 돌아가기 때문에, 부팅시 로딩이 느리긴 하지만, 매우 안정적이고, 구형 컴퓨터를 활용할 수가 있으며, 방화벽 기능이 상당히 뛰어난 편입니다.
코요테의 초기 버젼이었던 1.xx 는 리눅스에 관한 지식이 없으면, 사용하기 힘들었지만, 2.xx 부터는 웹어드미니스트레이터가 생겨서, 일반 가정용 공유기 처럼 셋팅하기가 쉬워 졌습니다.


 

Posted by Yoons...
,