패리티 비트, 블록합 검사
패리티 비트패리티 비트란?데이터 전송중 오류를 감지하기 위한 가장 간단한 형태의 오류 검출 코드작동 방식데이터의 비트 개수를 특정 규칙에 맞게 조정하여 오류를 감지전송할 데이터에 추가적인 1비트(패리트 비트)를 붙여 오류 감지짝수 패리티데이터 비트 1의 갯수가 짝수가 되도록 패리티 비트를 설정홀수 패리티데이터 비트 1의 갯수가 홀수가 되도록 패리티 비트 설정예시데이터 : 1011001(1의 개수 4)짝수 패리티 : 이미 1의 개수가 짝수이므로 0 추가홀수 패리티 : 1을 추가하여 홀수로 만듦한계전송 과정에서 비트가 바뀌는 오류 발생시, 수신 측에서 패리티를 확인하여 오류 감지하지만 짝수 개의 비트가 동시에 오류가 나면 감지하지 못함블록합 검사블록합 검사란?체크섬은 데이터 블록의 무결성을 검증하기 이해 사..
2025.03.14
플로이드 워셜(Floyd Warshall)
플로이드 워셜이란?모든 정점 쌍 간의 최단 경로를 찾는 알고리즘다익스트라는 한 정점에서 다른 모든 정점까지 최단 경로를 구하는 것과 달리, 모든 정점에서 모든 정점까지 최단 경로를 한번에 구함알고리즘 개요그래프 유형 : 가중치가 있는 방향 그래프(무방향도 존재)음수 가중치 : 가능(음수 가중치는 허용하지만 음수 사이클이 있으면 안됨)시간 복잡도: $O(N^3)$(정점의 개수가 N일 때)공간 복잡도:$O(N^2)$(모든 정점 간 거리 정보를 저장)플로이드 워셜은 동적 계획법을 사용하여 점진적으로 최단거리를 갱신하는 방식을 사용알고리즘 동작 방식초기화정점 i에서 j로 가는 비용을 저장하는 거리 행렬 dist[i][j]를 만듦자기 자신으로 가는 경로는 $\theta$, 직접 연결된 경로는 가중치 값으로 초기화..
2025.03.11
벨만포드
벨만포드벨만포드란?그래프에서 최단 경로를 찾는 알고리즘음의 가중치를 지닌 간선이 있을때도 사용가능모든 간선을 여러번 검사하여 최단 경로를 찾음알고리즘 단계초기화 : 모든 정점의 거리를 무한대로 초기화하고, 시작 정점을 0으로 초기화간선 완화: 모든 간선을 반복하여 검사하면서, 현재 경로보다 더 짧은 경로가 발견되면 거리를 업데이트반복 : 위의 과정을 모든 정점의 수 -1번 반복음의 사이클 검사: 추가로 한번 더 모든 간선을 검사하여 거리가 업데이트 된다면, 음의 가중치 사이클이 존재하는 것을 알 수 있음적용 예시네트워크 라우팅: 음의 비용이 있는 경로를 고려해야하는 경우게임 개발: 경로 찾기 알고리즘 등
2025.02.25
힙(우선순위 큐)
힙(Heap)힙이란?완전 이진트리 기반의 우선순위 큐(Priority Queue)를 구현하기 위한 자료구조종류최대 힙(Max Heap) : 부모 노드의 값이 자식 노드보다 항상 큼최소 힙(Min Heap) : 부모 노드의 값이 자식 노드보다 항상 작음특징완전 이진트리 구조로, 항상 왼쪽부터 차례대로 채워짐부모-자식간 우선순위 조건이 유지됨탐색 O(N), 삽입/삭제 O(logN)시간 복잡도를 갖음힙 연산삽입(Insert) -> O(logN)새 데이터를 힙의 마지막 노드에 추가부모 노드와 비교하여 힙 속성을 유지하도록 교환(Swapping)올바른 위치를 찾을 때까지 반복삭제(Delete) -> O(logN)루트 노드(최대 or 최소)를 제거마지막 노드를 루트로 올림자식과 비교하면서 힙 속성을 유지하도록 교환..
2025.02.24
대칭키/비대칭키 암호화
대칭키/비대칭 키 암호화데이터를 안전하게 전송하고 보호하기 위해 사용되는 두 가지 주요 암호화 방식대칭키 암호화정의암호화와 복호화에 동일한 키를 사용하는 방식작동 원리송신자와 수신자가 동일한 비밀키 공유송신자는 이 키를 사용하여 평문을 암호화 함수신자는 같은 키를 사용해 암호문을 복호화함장점암호화 및 복호화 속도가 빠름대용량 데이터 암호화에 적합단점키 교환 문제: 안전한 키전달 방법이 필요키 관리의 어려움 : 많은 사용자 간 통신 시 키 관리가 복잡주요 알고리즘DES, 3-DES, AES, SEED, ARIA(블록 암호화)RC-4 (스트림 암호)비대칭 암호화정의공개키와 개인키라는 두 개의 서로 다른 키를 사용하는 방식작동 원리각 사용자는 공개키와 개인키 쌍을 생성공개키는 누구나 접근 가능하도록 공개개인키..
2025.02.19
Perlin Noise VS Simplex Noise
Perlin Noise펄린노이즈란?부드러운 무작위 패턴을 생성하는 알고리즘일반적인 랜덤 노이즈보다 자연스럽고 연속적인 패턴을 만들어 절차적 지형 생성, 택스처 생성, 애니메이션 효과, 셰이더 등에 많이 사용특징연속적인 값(Smooth Interpolation)일반적인 랜덤 노이즈는 픽셀 간에 급격한 변화가 있지만. Perlin Noise는 부드럽게 변화하는 패턴을 만듦이를 위해 주변 값들과 보간(Interpolation)을 수행하여 부드러운 전환을 만듦자원 확장 가능(1D, 2D, 3D...)1D Perlin Noise ->선형적인 변화를 표현(예: 음향 파형)2D Perlin Noise ->지형 생성, 클라우드 패턴, 텍스처에 사용3D Perlin Noise -> 볼륨 텍스터, 연기, 물 효과 등 자연..
2025.02.18
언리얼 리플렉션 시스템
리플렉션(Reflection)이란?언리얼 엔진의 리플렉션 시스템은 C++ 코드에서 런타임 또는 에디터에서 객체의 속성, 함수 등을 동적으로 접근하고 조작할 수 있도록 하는 시스템언리얼 엔진의 핵심 기능인 블루프린트, 세리얼라이제이션, 가비지 컬렉션, 리플렉션 기반 프로퍼티 시스템 등과 밀접하게 연관되어 있음핵심 요소Unreal Header Tool(UHT)UCLASS, UPROTERTY, UFUNCTION등 매크로가 포함된 C++코드를 언리얼 헤더 툴이 분석하고, 자동으로 메타데이터를 생성하는 .generated.h 파일을 만듦이 파일은 리플렉션 정보를 포함하는 StaticClass() 함수, 프로퍼티 테이블, 함수 테이블등이 정의 됨언리얼 엔진은 클래스의 구조, 변수, 함수 정보를 런타임에도 알 수 있..
2025.02.10
no image
프로세스/스레드 차이
프로세스정의실행중인 프로그램의 인스턴스를 의미운영체제로부터 독립적인 메모리 공간과 자원(CPU, 메모리 등)을 항당받아 실행특징실행중인 프로그램을 의미하며 여러 개의 프로셋,가 동시에 실행할 수 있음각각 독립적인 코드, 데이터, 힙, 스택 메모리 공간을 가짐다른 프로세스와 메모리를 공유하지 않음-> 프로세스 간 통신(IPC, Inter-Process Communication)이 필요운영체제에 의해 개별적으로 개별적으로 관리됨(PID(Process)부여)메모리 구조코드 영역: 실행할 프로그램의 명령어가 저장됨데이터 영역: 전역 변수 및 정적 변수가 저장됨힙 영역: 동적 메모리 할당을 저장하는 공간스택 영역: 함수 호출, 지역변수 저장(각 스레드마다 개별적으로 할당됨)실행 예시게임 실행시, 게임 실행 파일이..
2025.02.07
스넬의 법칙, 프레넬 방적식
스넬의 법칙(Snell's Law)정의빛이 서로 다른 매징 사이를 통과할때 굴절하는 각도를 설명하는 물리 법칙수식$n1sin\theta_1 = n2sin\theta_2$n1 : 첫번째 매질 굴절률$\theta_1$ :첫번째 매질에서의 입사각(법선과 이루는 각도) n2: 두번째 매질의 굴절률$\theta_2$ : 두번째 매질에서의 굴절각(법선과 이루는 각도)즉, 매질의 굴절률과 입사각, 굴절각 사이의 관계를 나타내는 법칙굴절률(Refractive Index)굴절률은 빛이 매질에서 이동할 때의 속도를 나타내는 값$n = \frac{c}{v}$c : 진공에서의 빛의 속도($3.0 * 10^8 m/s$)v : 해당 매질에서의 빛의 속도굴절률이 높을수록 빛이 그 매질에서 더 느리게 이동스넬의 법칙의 의미입사각이 ..
2025.02.06