본문 바로가기

알고리즘

LRU 알고리즘 (Least Recently Used Algorithm) LRU 알고리즘 (Least Recently Used Algorithm) LRU 알고리즘 : 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법 LRU 알고리즘의 자세한 설명에 앞서 간단한 배경 지식을 설명하겠습니다! 페이지 교체 알고리즘 페이지 교체 알고리즘은 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생 하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법입니다. 페이지 교체 알고리즘의 예로, FIFO, LFU, LRU 알고리즘 등이 있습니다. FIFO : 페이지가 주기억장치에 적재된 시간을 기준으로 교체될 페이지를 선정하는 기법단점 : 중요한 페이지가 오래 있었다는 이유만으로 교체되는 불합리. 가장 오래 있었던 페이지는 앞으로 계속 사용..
KMP 알고리즘(Knuth-Morris-Pratt Algorithm) KMP 알고리즘(Knuth-Morris-Pratt Algorithm) 문자열 검색 알고리즘의 하나로, 고지식한 알고리즘을 한 차례 개선할 수 있습니다. 찾을 단어의 접두사와 접미사를 이용하여 탐색횟수를 줄여줍니다. 우선, KMP를 본격적으로 설명하기 전, 고지식한 알고리즘으로 문자열에서 단어를 찾는 경우를 살펴보겠습니다. 고지식한 알고리즘으로 탐색 :: O(MN) 탐색할 문자열 : ABABAABAABAA 찾을 단어 : ABAABA 고지식한 알고리즘은 단어를 한칸씩 이동하면서 문자열을 탐색합니다. 탐색 결과, 찾을 단어의 시작 위치를 7번 변경하여 모든 문자열을 탐색할 수 있었습니다. 이 알고리즘은 단어의 길이가 M이고 문자열의 길이가 N일 때, big-O 표기법으로 O(MN)의 시간복잡도를 갖습니다. 이..
[SW 문제해결 응용] LIS :: 최장 부분 증가 수열 LIS(Longest Increasing Subsequence) 최장 부분 증가 수열 구하는 문제 : 어떤 수열이 왼쪽에서 오른쪽으로 나열되어 있으면, 그 배열 순서를 유지하면서 크기가 점진적으로 커지는 가장 긴 부분수열을 추출하는 문제 부분 수열에 포함되는 요소들이 순서상 연속적일 필요는 없음 문제 풀이를 위한 방법으로 3가지가 있다. 1. 완전 탐색2. 다이나믹 프로그래밍3. 이분 탐색 완전탐색, O(2^N) 완전 검색 적용 1. 수열의 모든 부분 집합을 구하여 각 부분 집합이 증가 수열이 되는지 판별 2. 증가 수열이 되는 수열 중 가장 길이가 긴 수열을 찾음 ex)S = {3, 2, 6, 4, 5, 1} 2^6 = 64개의 부분집합 길이가, 0일 때, {}1일 때, {3}, {2}, {6}, {4..