알고리즘 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''알고리즘'''(algorithm)이란 어떤 문제를 해결하기 위해 정해진 규칙이나 절차를 말한다. '''알고리듬'''(algorithm) 또는 '''산법'''(算法)이라고도 한다. [[컴퓨터]] 알고리즘은 입력된 자료를 바탕으로 원하는 출력을 유도하는 규칙들의 집합이다. 알고리즘은 [[프로그램]] 개발의 기초가 된다.
+
'''알고리즘'''(algorism)이란 어떤 문제를 해결하기 위해 정해진 규칙이나 절차를 말한다. '''알고리듬'''(algorithm) 또는 '''산법'''(算法)이라고도 한다. [[컴퓨터]] 알고리즘은 입력된 자료를 바탕으로 원하는 출력을 유도하는 규칙들의 집합이다. 알고리즘은 [[프로그램]] 개발의 기초가 된다.
  
 
== 명칭 ==
 
== 명칭 ==
8번째 줄: 8번째 줄:
 
알고리듬으로 표기하는 것은 영어식 표기이다. 영어로 algorithm의 발음 기호는 [ӕlgərɪðəm]이며 ð는 this [ðɪs]의 ð 발음이다. 따라서 이 단어는 영어식으로 '앨거리듬'으로 표기하거나 좀 더 한국식 발음으로 표기하면 '알고리듬'으로 표기할 수 있다. 영어에서 algorithm을 알고리즘으로 읽는 건 this를 "지스"로 읽는 것과 마찬가지의 잘못이다. rhythm [rɪðəm]을 '리즘'이 아닌 '리듬'으로 표기하는 것과 마찬가지로 algorithm은 알고리듬으로 표기해야 한다는 주장이다. 한편 algorism이라는 "아라비아 숫자식 기수법"이라는 뜻을 가진 유사한 단어가 있는데, 이 단어의 발음기호는 [ǽlɡərìzm]이므로 오히려 이 단어를 앨거리즘이나 알고리즘이라고 읽어야 한다는 의견이다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 알고리즘]〉, 《위키백과》</ref>
 
알고리듬으로 표기하는 것은 영어식 표기이다. 영어로 algorithm의 발음 기호는 [ӕlgərɪðəm]이며 ð는 this [ðɪs]의 ð 발음이다. 따라서 이 단어는 영어식으로 '앨거리듬'으로 표기하거나 좀 더 한국식 발음으로 표기하면 '알고리듬'으로 표기할 수 있다. 영어에서 algorithm을 알고리즘으로 읽는 건 this를 "지스"로 읽는 것과 마찬가지의 잘못이다. rhythm [rɪðəm]을 '리즘'이 아닌 '리듬'으로 표기하는 것과 마찬가지로 algorithm은 알고리듬으로 표기해야 한다는 주장이다. 한편 algorism이라는 "아라비아 숫자식 기수법"이라는 뜻을 가진 유사한 단어가 있는데, 이 단어의 발음기호는 [ǽlɡərìzm]이므로 오히려 이 단어를 앨거리즘이나 알고리즘이라고 읽어야 한다는 의견이다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 알고리즘]〉, 《위키백과》</ref>
  
위 주장에 대해 반론도 존재한다. 알고리즘이라는 말은 영어가 아니라 원래 페르시아어인데, "알콰리즘 + 이 = 알콰리즈미"(al-Kwarizmi)이므로, '리듬'이 아니라 '리즘'이 맞다는 의견이다. 이 말이 서양으로 건너온 라틴어에서도 "알고리즘 + 우스 = 알고리즈무스"(algorismus)로 표기되므로, '리듬'이 아니라 '리즘'에 가깝다. 따라서 한국어로는 최대한 원어에 가깝게 '알고리즘'으로 표시하는 것이 맞다는 의견이다. 어쨌든 실제 생활에서는 알고리즘이라는 표기가 알고리듬이라는 표기에 비해 약 30배 정도 압도적으로 많이 사용되고 있다.
+
위 주장에 대해 반론도 존재한다. 알고리즘이라는 말은 영어가 아니라 원래 페르시아어인데, "알콰리즘 + 이 = 알콰리즈미"(al-Kwarizmi)이므로, '리듬'이 아니라 '리즘'이 맞다는 의견이다. 이 말이 서양으로 건너온 라틴어에서도 "알고리즘 + 우스 = 알고리즈무스"(algorismus)로 표기되므로, '리듬'이 아니라 '리즘'에 가깝다. 따라서 한국어로는 최대한 원어에 가깝게 '알고리즘'으로 표시하는 것이 맞다는 의견이다. 또한 알고리즘의 영어 표기도 굳이 algorithm으로 하지 않고, algorism으로 하고 있으므로<ref>〈[https://ko.dict.naver.com/detail.nhn?docid=25173900 알고리즘 algorism]〉, 《네이버 국어사전》</ref>, 그것에 해당하는 한국어 표기는 '알고리듬'이 맞다는 의견이다. 어쨌든 실제 생활에서는 알고리즘이라는 표기가 알고리듬이라는 표기에 비해 약 30배 정도 압도적으로 많이 사용되고 있다.
  
 
== 종류 ==
 
== 종류 ==
 
 
=== 암호 알고리즘 ===
 
=== 암호 알고리즘 ===
 +
----
 
[[암호 알고리즘]]이란 문서나 데이터의 내용을 다른 사람이 알지 못하게 하거나 혹은 본인 인증을 위해 사용하는 알고리즘을 말한다. [[DES]], [[AES]], [[ARIA]], [[SEED]] 등의 [[대칭키 암호]] 알고리즘과 [[RSA]], [[타원곡선암호]] 등 [[공개키 암호]] 알고리즘이 있다.
 
[[암호 알고리즘]]이란 문서나 데이터의 내용을 다른 사람이 알지 못하게 하거나 혹은 본인 인증을 위해 사용하는 알고리즘을 말한다. [[DES]], [[AES]], [[ARIA]], [[SEED]] 등의 [[대칭키 암호]] 알고리즘과 [[RSA]], [[타원곡선암호]] 등 [[공개키 암호]] 알고리즘이 있다.
  
* '''대칭키 암호 알고리즘'''
+
; 대칭키 암호 알고리즘
:* '''[[DES]]''' :
+
* '''[[DES]]''' :
:* '''[[AES]]''' :
+
* '''[[AES]]''' :
:* '''[[ARIA]]''' :
+
* '''[[ARIA]]''' :
:* '''[[SEED]]''' :
+
* '''[[SEED]]''' :
  
* '''비대칭키 암호 알고리즘'''
+
; 공개키 암호 알고리즘
:* '''[[RSA]]''' :
+
* '''[[RSA]]''' :
:* '''[[타원곡선암호]]''' :
+
* '''[[타원곡선암호]]''' :
  
 
=== 합의 알고리즘 ===
 
=== 합의 알고리즘 ===
{{:합의 알고리즘 종류}}
+
----
 +
[[합의 알고리즘]]이란 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘을 말한다. [[작업증명]](PoW), [[지분증명]](PoS), [[위임지분증명]](DPoS), [[활동증명]](PoA), [[중요도증명]](PoI), [[신뢰성증명]](PoB), [[권위증명]](PoA) 등 다양한 합의 알고리즘이 있다.
 +
 
 +
* '''[[작업증명]]'''('''PoW''', Proof of Work) : 목표값 이하의 [[해시]]를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 방식의 알고리즘이다. [[채굴]](mining)을 통해 작업증명을 한다. [[비트코인]], [[이더리움]], [[라이트코인]], [[비트코인캐시]], [[비트코인골드]], [[모네로]], [[지캐시]], [[시아코인]], [[불왁]], [[에이치닥]] 등의 암호화폐에서 작업증명 방식을 사용하고 있다.
 +
* '''[[균형작업증명]]'''('''ePoW''', equilibrium Proof of Work) : 기존 [[작업증명]](PoW) 방식을 기반으로 하되, 한 번 [[채굴]]에 성공한 [[노드]]는 일정 기간 강제로 휴식을 취하도록 만들어 다른 노드들에게 채굴 기회를 공평하게 나누어 주는 방식의 합의 알고리즘이다. [[에이치닥]] 코인에서 이 방식을 사용하고 있다.
 +
* '''[[지분증명]]'''('''PoS''', Proof of Stake) : 해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사결정 권한을 주는 방식이다. 주주총회에서 주식 지분율에 비례하여 의사결정 권한을 가지는 것과 유사하다. [[채굴]] 과정이 필요 없다. [[큐텀]], [[피어코인]] 등의 암호화폐가 지분증명 방식을 사용하고 있다. [[스트라티스]]는 처음에 작업증명 방식을 사용했으나 지분증명 방식으로 변경했다. [[이더리움]]도 현재 작업증명 방식을 벗어나 지분증명 방식으로 변경할 예정이다.<ref>블록인프레스, 〈[https://blockinpress.com/archives/4806 이더리움 지분증명 합의 알고리즘 ‘캐스퍼’, 검토 절차 시작]〉, 《블록인프레스》, 2018-04-23</ref>
 +
* '''[[우로보로스 지분증명]]'''('''OPoS''', Ouroboros Proof of Stake) : 기존 [[지분증명]] 방식의 문제점인 [[그라인딩 공격]](Grinding Attack)을 방어하기 위해 [[코인토싱]]<!--코인 토싱-->(coin tossing) 프로토콜을 사용하여 만든 합의 알고리즘이다.<ref>seungjae1012, 〈[https://steemit.com/coinkorea/@seungjae1012/cardano-ada-pos-ouroboros 카르다노(Cardano, ADA) 탐구: 지분 증명(POS)의 한계와 우로보로스(Ouroboros)]〉, 《스팀잇》, 2018년 2월</ref> [[에이다]]가 이 방식을 사용하고 있다.
 +
* '''[[리스지분증명]]'''('''LPoS''', Leased Proof of Stake) : 자신이 소유한 암호화폐를 다른 사람에게 리스(lease)로 임대해 주고 그 대가로 보상을 받는 방식이다. [[웨이브]]가 이 방식을 사용하고 있다.
 +
* '''[[위임지분증명]]'''('''DPoS''', Delegated Proof of Stake) : 암호화폐 소유자들이 각자의 지분율에 비례하여 투표권을 행사하여 자신의 대표자를 선정하고, 이 대표자들끼리 합의하여 의사결정을 내리는 방식이다. 국민의 대표로 의원을 뽑아 의회를 구성하는 대의 민주주의 제도와 유사하다. [[이오스]], [[스팀]], [[리스크]], [[엘프]], [[라이즈]], [[아크]], [[비트셰어]], [[시프트]], [[보스코인]] 등이 위임지분증명 방식을 채택하고 있다.
 +
* '''[[이중위임지분증명]]'''<!--이중 위임 지분 증명-->('''DDPoS''', Dual Delegated Proof of Stake) : 기존의 [[위임지분증명]](DPoS) 방식을 사용하면서, 알고리즘에 따라 실시간으로 교체되는 임의의 노드인 시그마노드<!--시그마 노드-->(sigma node)를 추가하여 검증하도록 함으로써 대표자들 간의 담합에 의한 블록체인 데이터 조작 가능성을 예방한 합의 알고리즘이다. [[곽진영]]이 창시한 [[시그마체인]]이 DDPoS 방식을 사용하고 있다.
 +
* '''[[활동증명]]'''('''PoA''', Proof of Activity) : 작업증명(PoW) 방식과 지분증명(PoS) 방식을 혼합한 알고리즘이다. [[디크레드]]가 이 방식을 사용하고 있다.<ref name="유지수">유지수 기자, 〈[https://tokenpost.kr/article-22 THEblockchain: 블록체인 합의 프로토콜 기초서]〉, 《토큰포스트》, 2017-03-07</ref>
 +
* '''[[지출증명]]''' : 코인을 결코 돌아올 수 없는 [[암호화폐 지갑|지갑]]에 보내서 소각하면, 소각한 코인량에 비례하여 채굴 성공 가능성이 높아지는 방식이다.<ref name="유지수"></ref> [[슬림코인]](slimcoin)이 이 방식을 사용하고 있다.
 +
* '''[[중요도증명]]'''('''PoI''', Proof of Importance) : 블록체인 네트워크에서 더 많은 지분을 가지고 더 많이 거래를 함으로써 더 많은 활동량을 보인 사람에게 더 큰 의사결정 권한을 주는 방식이다.<ref>이정훈 기자, 〈[http://www.edaily.co.kr/news/news_detail.asp?newsId=01164406619106912&mediaCodeNo=257&OutLnkChk=Y (이정훈의 암호화폐 읽기)<9>채굴량 제한된 비트코인, 작업증명의 대안]〉, 《이데일리》, 2018-02-03</ref> [[넴]]이 이 방식을 사용하고 있다.
 +
* '''[[신뢰성증명]]'''('''PoB''', Proof of Believability) : 커뮤니티에 대한 기여도를 고려하여 신뢰성이 높은 그룹을 찾아내고 이를 묶어서 증명에 사용하는 방식이다.<ref>유병철 기자, 〈[http://news.g-enews.com/view.php?ud=20180507165743666581e5800d6_1&md=20180509104921_J (기묘한 재테크) 이오스트, 시총 50위권 진입한 플랫폼 코인]〉, 《글로벌이코노믹》, 2018-05-09</ref> [[이오스트]]가 이 방식을 사용하고 있다.
 +
* '''[[권위증명]]'''('''PoA''', Proof of Authority) : 권위있는 기관에서 조건에 맞는 [[노드]]를 증명해 이들간 합의를 이루는 방식이다. [[두나무]] 블록체인 서비스(DBS)는 권위증명(PoA) 방식을 사용한다.<ref>한수연 기자, 〈[http://www.bloter.net/archives/312040 박재현 두나무 연구소장, “클라우드 블록체인 서비스 내년 출시”]〉, 《블로터》, 2018-06-08</ref>
 +
* '''[[용량증명]]''' : [[노드]]가 가진 데이터 [[스토리지]] 공간의 크기에 비례하여 투표 효력을 계산하는 방식이다. 용량증명의 변형된 형태가 '''저장증명'''과 '''공간증명'''(Proof of Space)이다. [[버스트코인]](Burstcoin)이 용량증명 방식을 사용하고 있다.<ref name="유지수"></ref>
 +
* '''[[경과시간증명]]'''('''PoET''', Proof of Elapsed Time) : 미국 [[인텔]]이 개발한 합의 알고리즘이다.<ref name="유지수"></ref> 한국의 [[이든체인]](EdenChain)이 이 방식을 사용하고 있다.<ref>이정훈 기자, 〈[http://www.edaily.co.kr/news/news_detail.asp?newsId=01364486619243032&mediaCodeNo=257 (이정훈의 블록체인 탐방)토큰경제 생태계 만든다…글로벌 플레이어 승부수]〉, 《이데일리》, 2018-06-18</ref>
 +
* '''[[프랙티컬 비잔틴 장애 허용]]'''('''PBFT''', Practical Byzantine Fault Tolerance) : [[네오]], [[질리카]], [[하이퍼레저]], [[R3]], [[ICT]], [[텐더민트]] 등에서 사용하는 방식이다.
 +
 
 
=== 체인 알고리즘 ===
 
=== 체인 알고리즘 ===
 +
----
 
[[체인 알고리즘]]이란 다수의 거래기록을 암호화하여 위변조를 방지하고 탈중앙 분산 저장 방식으로 데이터를 관리하는 알고리즘이다. [[블록체인]] 알고리즘과 그 대안으로 나온 [[라이트닝 네트워크]], [[플라즈마]], [[플라즈마캐시]], [[사이드체인]], [[더블체인]], [[인터체인]], [[탱글]], [[해시그래프]] 등이 있다.
 
[[체인 알고리즘]]이란 다수의 거래기록을 암호화하여 위변조를 방지하고 탈중앙 분산 저장 방식으로 데이터를 관리하는 알고리즘이다. [[블록체인]] 알고리즘과 그 대안으로 나온 [[라이트닝 네트워크]], [[플라즈마]], [[플라즈마캐시]], [[사이드체인]], [[더블체인]], [[인터체인]], [[탱글]], [[해시그래프]] 등이 있다.
  
{{:체인 알고리즘 종류}}
+
* '''[[블록체인]]'''(blockchain) : 다수의 거래 기록을 묶어 블록을 구성하고, [[해시]]를 이용하여 여러 블록을 체인처럼 연결한 뒤, 다수의 사람들이 복사하여 분산 저장하는 알고리즘이다. [[비트코인]]의 창시자인 [[사토시 나카모토]]가 처음 개발했다.
 +
* '''[[라이트닝 네트워크]]'''<!--라이트닝네트워크-->(lightning network) : 기존 [[블록체인]]의 느린 속도를 해결하고 번개처럼 빠른 속도를 구현하기 위해, 개별 거래를 별도의 채널에서 처리한 후 그 결과만 블록체인에 기록하는 방식으로 작동하는 알고리즘이다.
 +
* '''[[플라즈마]]'''(plasma) : 모든 거래내역을 메인체인에서 처리하는 블록체인과 달리, 메인체인(또는 루트체인)에 나뭇가지처럼 이어진 차일드체인에서 사전에 수집된 정보들을 처리한 후 결과만 루트체인에 전달함으로써 처리 속도를 향상시킨 알고리즘이다. [[비탈릭 부테린]]과 [[조셉 푼]]이 공동 개발했다.
 +
* '''[[플라즈마캐시]]'''<!--플라즈마 캐시-->(plasma cash) : 모든 사용자가 모든 거래내역을 복사하여 관리하던 기존의 [[블록체인]]이나 [[플라즈마]] 알고리즘과 달리, 개별 사용자가 관심을 가진 특정 코인이 포함된 블록만 추적함으로써 처리 속도를 향상시킨 알고리즘이다. 이더리움을 창시한 [[비탈릭 부테린]]과 [[댄 로빈슨]], [[칼 플로어쉬]] 등이 공동 개발하고 있다.
 +
* '''[[사이드체인]]'''<!--사이드 체인-->(sidechain) : [[플랫폼]] 코인에 해당하는 [[이더리움]], [[넴]], [[엘프]] 등의 메인체인 옆에 나란히 붙어서 작동하는 체인을 말한다.<ref>유성민 칼럼니스트, 〈[http://www.sciencetimes.co.kr/?news=%EB%8C%80%EC%95%88-%EC%B2%B4%EC%9D%B8%EA%B3%BC-%EC%82%AC%EC%9D%B4%EB%93%9C-%EC%B2%B4%EC%9D%B8%EC%9D%80-%EB%AD%98%EA%B9%8C 대안 체인과 사이드 체인은 뭘까]〉, 《사이언스타임즈》, 2018-03-20</ref> 사이드체인만의 독립된 노드를 구성하지 않고, 기존 메인체인의 노드에 사이드체인의 노드가 추가되는 방식으로 작동한다.
 +
* '''[[더블체인]]'''<!--더블 체인-->(double chain) : 퍼블릭 블록체인과 프라이빗 블록체인을 연결한 체인이다. 예를 들어, 보안이 중요한 가정용 [[사물인터넷]](IoT) 기기는 프라이빗 블록체인을 이용하고, 자동화된 결제를 위해 퍼블릭 블록체인에 연결하는 방식이다. [[㈜더블체인]]<!--더블체인-->의 [[전삼구]] 대표가 제안한 개념이다.<ref>성지은 기자, 〈[http://news.inews24.com/php/news_view.php?g_serial=1083307&g_menu=020830&rrf=nv 이제는 더블체인…"퍼블릭-프라이빗 블록체인 연결"]〉, 《아이뉴스24》, 2018-03-19</ref>
 +
* '''[[인터체인]]'''<!--인터 체인-->(interchain) : 다른 [[블록체인]]들을 서로 연결하기 위한 체인이다. 인터체인을 사용하면 A라는 암호화폐로만 구매할 수 있는 제품이나 서비스를 인터체인으로 연결된 B라는 다른 암호화폐로도 구매할 수 있다. 인터체인 방식의 [[암호화폐]]는 한국의 [[㈜더루프]]<!--더루프-->가 개발한 [[아이콘]] 등이 있다.
 +
* '''[[퓨어체인]]'''(purechain) : [[물리적 복제방지기술]](PUF)을 이용하여 데이터의 위변조를 방지하고 거래 당사자 간의 합의만으로도 거래를 확정지을 수 있는 기술이다.<ref>손예술 기자, 〈[http://www.zdnet.co.kr/news/news_view.asp?artice_id=20180308142218 PUF 기반 '퓨어체인' 공개…"처리속도 지연 없는게 특징"]〉, 《지디넷코리아》, 2018-03-08</ref> 기존 [[블록체인]]의 문제점을 하드웨어적으로 해결하려는 시도이다.
 +
* '''[[탱글]]'''(tangle) : 기존 [[블록체인]]의 한계를 극복하고자 블록 자체를 없애고, 새로 발생한 거래가 이전에 발생한 2개의 거래를 확인해 주는 방식으로 작동하는 알고리즘이다. [[사물인터넷]](IoT) 시대의 [[M2M]]<ref>[[M2M]]이란 Machine to Machine의 약자로서, [[사물인터넷]](IoT) 시대를 맞이하여 기계와 기계가 인터넷을 통해 서로 정보를 주고받는 것을 말한다.</ref> 코인인 [[아이오타]](IOTA)에 사용된 알고리즘이다.
 +
* '''[[해시그래프]]'''<!--해시 그래프-->(hashgraph) : 기존 [[블록체인]]의 한계를 극복하고자 [[연결 리스트]] 방식이 아니라, 하나의 [[노드]]가 다른 불특정 노드에게 [[가십]](gossip)을 전달하는 방식으로 작동하는 알고리즘이다. 기존 블록체인의 장점인 위변조 방지 기능과 탈중앙 의사결정구조를 유지하면서도, 1초에 수십만 건 이상의 [[트랜잭션]]을 처리할 수 있다. [[리몬 베어드]](Leemon Baird)가 개발했다.
 +
 
 
{{각주}}
 
{{각주}}
  

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)