Computing/Algorythm

    해쉬함수란?

    해시함수해시함수는 임이의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수이다.해시 함수를 사용하는 목적은 메시지의 오류나 변조를 탐기 위해, 즉 데이터의 무결성을 제공하기 위해 사용한다. 해시 함수의 특징어떤 입력 값에도 항상 고정된 길이의 해시값을 출력한다.눈사태 효과 : 입력 값의 아주 일부만 변경되어도 전혀 다른 결과 값을 출력한다.출력된 결과 값을 토대로 입력값을 유추할 수 없다. SHA(Secure Hash Algorithm)해시(Hash)의 종류에는 MD 알고리즘 및 SHA 알고리즘이 있습니다. 이번 포스팅에서는 비트코인에서 사용되는 알고리즘인 SHA256 함수에 대해서 알아보도록 하겠습니다. SHA(Secure Hash Algorithm)알고리즘은 미국 NSA에 의해 만들..

    합의 알고리즘

    블록체인 기술에 대하여 학습하고 학습한 내용을 정리하여 스팀잇에 포스팅을 진행하면 좋을 것 같아 포스팅을 시작하게 되었습니다.탈중앙화 Application(DApp)백엔드가 탈중앙화된 피어 투 피어(Peer-to-Peer) 네트워크에서 동작.소스가 오픈 소스인 일종의 인터넷 애플리케이션.어떠한 단일 노드도 탈중앙화 애플리케이션(DApp)에 대한 제어권을 가질 수 없음.​DApp은 기본적으로 피어 투 피어 네트워크에서 동작하기 때문에 인터넷에 연결된 어떤 컴퓨터라도 피어가 될 수있으므로 애플리케이션 데이터를 잘못된 값으로 변경하거나 다른 피어들과 올바르지 않은 정보를 공유하는 피어를 찾아내고 방지하는 것이 큰 도전 과제입니다.피어가 발행한 정보가 올바른지 검증하기 위한 방법이 일종의 합의 프로토콜, 합의 ..

    결정론적 알고리즘

    비결정론적 알고리즘 만들기[편집]어떤 알고리즘이 비결정론적으로 작동하게 하는 데는 여러 방법이 있다.입력 이외의 외부 상태를 알고리즘에 적용함[2]알고리즘이 시간에 민감하게 동작함[3]하드웨어의 오류를 이용하여 알고리즘 진행과정을 예상할 수 없는 방식으로 변화시키는 방법실제 프로그램에서는 순수하게 결정론적인 경우가 드물지만, 순수하게 결정론적이라고 생각하는 것이 여러모로 편리하다. 이런 이유로 프로그래밍 언어, 특히 함수형 언어의 경우, 미리 지정된 경우가 아니면 위와 같은 상황을 최대한 피해야 한다. 이런 이유로, 결정론적 알고리즘을 가끔 순수함수(purely functional)라고 부르기도 한다.결정론적 알고리즘의 문제점[편집]어떤 문제는 결정론적 알고리즘을 찾기 어렵다. 예를 들어, 어떤 수가 소..

    동적프로그래밍 vs Memoization

    동적 계획법(Dynamic Programming) -요약:부분문제 반복과 최적부분구조 우리가 전에 피보나치 수를 계산하기 위해 재귀 함수를 사용했었다.이는 같은 연산이 반복되기 때문이다. 그러나 이 함수의 진행 과정을 살펴보면 중복이 심하다는 것을 알수 있다. 위의 그림에서 보면 fib(2)가 여러번 반복되며 오버헤드가 증가함으로 결국 비효율적인 코드가 된다. 따라서 이러한 중복을 제거 하기 위해서 메모이제이션(Memoization)이라는 테크닉을 사용한다.이는 사전에는 나오지 않는 프로그래밍 테크닉이며, 계산된 값을 버리지 말고 저장한다는 뜻이다예를 들어 위의 그림에서 계산이 된 fib(2) 값을 저장해 놓고 있다가, 필요한 경우 계산없이 호출하게 된다.이렇게 저장되는 배열을 '캐시'라고 하며, 중간에..