![[Data Structure] 꼭 알아야 할 자료구조와 알고리즘 테이블](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnHEMm%2FbtsCiM6thKN%2FmRellb3GuK5tgRL3UWymBk%2Fimg.jpg)
어제자로 학기로부터 해방되어, 평소 꼭 정복해보고 싶었던 자료구조, 그리고 알고리즘에 대해 약간의 정리를 해볼까 합니다. 일종의 Cheatsheet인데요, 나중엔 머릿속에 다 들어와 있겠죠? 코딩테스트 풀이 때, 시간 초과와 메모리 초과로부터 좀 해방될 수 있었으면 좋겠네요. Data Structures Data Structure Purpose Time Complexity (Avg)Space Complexity Additional Notes Array Stores elements of the same type in contiguous memory locations. Access: O(1), Search: O(n), Insertion: O(n), Deletion: O(n) O(n) Fixed size, e..
![[AI] 드디어 이해한 신경망, 퍼셉트론, 다층 퍼셉트론, RBF 망](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp6Pe8%2FbtsASu6I4no%2FUH4zmzjLHEGUfdFift6GL1%2Fimg.webp)
이해하며 개인 노션에 작성한 글인데, 경어체를 쓸 겨를이 없군요! 추후 수정하도록 하겠습니다. 우선, s값을 계산해보자. 입력값 Xi * Wi(가중치)(i는 1부터 끝까지) + 1 * W0(bias) = s 구한 값을 f(), 즉 전달 함수(=활성화 함수)에 집어 넣는다. 여기서는, s가 특정값 이상이면 1이고, 아니면 0이다. 생물에서, 역치를 넘으면 반응하는 것 과 비슷하다. 그럼, OR 연산을 하는 퍼셉트론을 구해보자. s는 어떻게 계산될까? x1 + x2 + (-0.5) = s 일 것이고, 그럼 만약 x1 = 1, x2 = 0 이면? 0.5가 나오고, 0을 넘으니 f(s) = 1 일 것이다. 그럼 만약 x1 = 0, x2 = 1 이면? 마찬가지로 0.5가 나오고, 0을 넘으니 f(s) = 1 일 ..
![[AI] 군집화 알고리즘과 단순 베이즈 분류기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNxm4g%2FbtsASWBVxKI%2FHkNJpzE3m069qM8JYZTXRk%2Fimg.png)
우선 군집화가 뭐였나요? 유사한 데이터끼리 모으는 것을 군집화 라고 합니다. 군집화는 다음과 같은 종류가 있습니다. 계층적 군집화: 군집들이 계층적인 구조를 가지도록 합니다. 병합형 계층적 군집화 하나의 데이터로 출발하여, 가까운 것을 결합해 나가며 계층구조를 생성합니다. Bottom-Up 방식이라고 볼 수 있습니다. 분리형 계층적 군집화 전체 데이터를 가지는 하나의 군집에서 출발하여, 유사성을 바탕으로 군집을 분리합니다. 분할 군집화: 계층 구조를 맏늘지 않고, 전체 데이터를 유사한 것들끼리 나눠서 묶습니다. ex) K-means 알고리즘 분산값 V를 최소로 하는 점의 집합을 찾는 것이 목표입니다. 1. 초기에 군집의 중심을 임의로 설정해줍니다. (K개 설정) 2. 모든 점들에 대해, 가장 가까운 U(..
![[AI] Decision Tree, 엔트로피, 정보 이득, 정보이득비, 지니 지수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcopbLL%2FbtsARgHtaob%2FPc6kHysuZGSmO5xyXXFhlk%2Fimg.png)
결정 트리는, 트리 형태로 의사결정 지식을 표현하는 것을 말합니다. 위의 예시는, 날씨가 어떨 때 테니스를 치러 갈까? 를 결정하는 의사결정 트리인데요, 쉽게 말해 Internal Node는, 기상 상황들을 말하는 것이고, Edge는 그 기상 상황이 어떤지, 즉 속성값을 나타냅니다. 그리고 마지막 Terminal node는, 부류. 여기서는 Yes or No를 나타냅니다. 결정 트리 알고리즘을 구성하는 것은, - 우선 하나의 노드로 구성된 트리에서 시작합니다. 1. 분할 속성을 선택하고, 2. 속성값에 따라서 서브트리를 확장 및 생성하고, 3. 데이터를 속성값에 따라 분배합니다. 이 1-2-3 과정을 반복합니다. 우리는 일반화 성능이 우수한 최대한 간단한 트리를 원합니다. 방금, 결정 트리 알고리즘을 구..
![[Network] Routing Algorithms, Link-State와 Distance Vector](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHRKsE%2FbtsASeJeTES%2FaeNdbk4FA0KH03zydK3mn0%2Fimg.png)
Routing이 뭔지 기억 나시나요? Network Layer의 두 가지 핵심기능이 포워딩과 라우팅 이었죠, 포워딩은 라우터 내부에서 적절한 Input port -> Output port를, 라우팅 테이블을 기반으로 찾아가는 것이었고요, 라우팅은 Source -> Destination 까지의 전체적인 경로를 결정합니다. 이 라우팅 기법에는 두가지가 있는데요, 1. Link State routing - 다익스트라 알고리즘 - OSPF - Complete Topology 2. Distance Vector routing - 벨만포드 알고리즘 - RIP - Partial Topology(Info) 아직 무슨 소리인가 싶겠지만, 차근차근 알아봅시다. 라우팅 알고리즘을 어떻게 분류할까요? 아 참, 잠깐 복습해봅시다..
![[Network] 4.3 IP: Internet Protocol](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboMpcb%2FbtsASvxb0WH%2FN0N6J3AqKSJETKWHT7jBg0%2Fimg.png)
네트워크 레이어의 프로토콜은 세 가지가 공존하는데요, Routing Protocol(경로를 설정해 줌) - 이 프로토콜을 통해 포워딩 테이블을 작성합니다. IP Protocol(= routed protocol) - 주소 입니다. Datagram 포맷을 가지고 있습니다. ICMP Protocol(에러를 추적하고, 컨트롤해주는 프로토콜) IP의 데이터그램의 형식입니다. IPv4 방식이나, ver엔 4가 들어가구요, TTL 이라는 개념이 있습니다. 패킷이 여러 라우터들을 거쳐 지나가는데, 어쩌다 무한루프를 돌다가 좀비가 될 수 있으니 TTL 이란 것을 설정해주는데, 일종의 수명 입니다. Hop - Hop 을 할 때마다 TTL을 하나씩 감소시킵니다. TTL이 0이 되는 패킷은 폐기합니다. Flgs, Fragme..
![[Network] Scheduling mechanisms](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJCsTh%2FbtsASIb1foT%2Fia8LhvhE6IaR5EwkYkMVrk%2Fimg.png)
우선, 개념을 복습하기에 앞서 스케줄링이 어디서 쓰이는지 알고 학습해야 합니다. 라우터 내에 일어나는 포워딩 과정에서, Input port가 아닌 Output port에서 버퍼링, 즉 datagram buffer queueing이 발생했을 때 어떤 패킷을 내보낼지 결정할 때 사용하는 정책입니다. FIFO Queue를 사용할 때는, 큐에 도착한 순서대로 내보내는데요, 실제 상황에서는, 큐가 꽉 찼을 때 새로운 패킷이 도착했을 경우 버릴 패킷을 정해야 합니다. 1. tail drop: 새로 들어오는 패킷을 버립니다. 2. priority: 우선순위 규칙에 따라서, 새로 온 것을 버리거나 기존 것을 제거합니다. 3. random: 들어오는 패킷과 쌓인 큐를 랜덤하게 뽑아서 버립니다. 2번의 경우는 자체적인 정..
![[Network] Input port queueing](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5yBES%2FbtsASFGmDc0%2F7VlK6KveMCTemcAgtGxiDK%2Fimg.png)
지금 우리가 무엇을 공부하고 있는지 기억해야 합니다. 라우터 내부에서 일어나는 것은? 포워딩 이죠. 포워딩은? Input port로 들어온 것을 적절한 output port로 이동시켜주는 일이구요. lookup, forwarding queueing input port의 트래픽을 다 합친 것보단, 스위치 패브릭의 처리 속도가 느리기 때문에 Queueing은 필연적입니다. 그리고 패킷 스위칭에서 Store and forward / Queueing delay and loss가 여기서 일어난다고 이해할 수 있겠습니다. Queueing이 일어나는 주된 상황인, Head of Line blocking을 알아봅시다. 좌측 그림에서, 1번 포트와 3번 포트는 동일한 output port로 포워딩 하려고 합니다. 그런데..
![[Network] Switching fabrics](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6HSv%2FbtsATfm5kXf%2FKPgYEhhtyMplc36x2btLC0%2Fimg.png)
스위칭 패브릭은 Input buffer로 들어온 패킷을, 적절한 output buffer로 패킷을 옮겨주는 것을 의미합니다. 그리고 switching rate라는 개념이 있는데요, 스위칭 속도로 이해할 수 있겠습니다. 스위칭 패브릭에는 세 가지 종류가 있습니다. memory 방식은, 처음 등장한 라우터의 방식입니다. 메모리 대역폭에 영향을 받고, 한 시점에 하나의 포워딩만 동작합니다. Bus 방식은 중앙 데이터 버스를 여러 컴포넌트가 공유하는 방식인데요, 메모리 방식보단 조금 나은데, 충돌이나 경합이 발생할 수 있습니다. crossbar 방식은, 가장 빠른 스위치 아키텍처가 필요할 때 사용하는데요, bus의 대역폭 문제도 극복했고, 지금 가장 많이 이용되는 방법입니다.