데이터 구조의 우선 순위 큐: 알아야 할 모든 것
게시 됨: 2021-04-07목차
소개
데이터 구조의 우선 순위 큐 는 ADT(추상 데이터 유형)의 중요한 형태입니다. 각 요소에는 우선순위가 부여되어 이를 정의하고 배열하는 특성으로 작용합니다.
ADTS는 데이터 과학 영역의 일부로, 데이터 구조는 정보를 저장하고 데이터 값의 액세스, 추가, 검색 및 수정과 같은 작업을 관리하기 위한 배열 패턴으로 사용됩니다. 이러한 데이터 배열에 사용되는 방법론은 데이터가 조직되는 방식을 지시합니다. 데이터 구조는 또한 데이터 흐름의 방향과 시스템 요소 내에서 공유되는 관계를 결정합니다.
전문가들은 2025년까지 전 세계 총 데이터가 175제타바이트를 넘어설 것으로 추정하고 있습니다. 이러한 대용량 데이터를 관리하기 위해 데이터 구조를 활용하여 대용량 데이터베이스 및 인덱싱 목적을 효율적으로 처리합니다. 스택, 큐, 배열, 힙 등과 같은 다양한 종류의 데이터 구조는 프로그래밍 단계에서 사용됩니다. 스택과 큐는 데이터가 순차적으로 저장되기 때문에 데이터 구조의 선형 형태입니다. 분기가 없고 각 요소/데이터 값이 일직선으로 배열되어야 합니다.
스택과 큐의 배열
스택은 스토리지 배열에 대해 LIFO(후입선출) 방식을 따르는 반면 큐는 FIFO(선입선출) 배열을 따릅니다. 이것은 이 두 선형 데이터 구조를 구별하는 중요한 요소입니다. 그들의 응용 프로그램은 고유한 계산 사용에 의존하기 때문에 LIFO/FIFO 접근 방식을 기반으로 결정됩니다.
데이터 과학 및 데이터 구조의 예에 대해 자세히 알아보려면 upGrad.com에서 주최하는 빅 데이터 PG 디플로마에 등록하십시오 .
대기열의 경우 FIFO는 여러 항목이 시스템에 추가될 때 첫 번째 추가된 항목이 액세스/제거되는 첫 번째 항목이 되도록 설정합니다.
대기열에서 수행할 수 있는 5가지 기본 작업
1. Enqueue: 이 작업은 큐에 요소를 추가하고자 할 때 수행됩니다.
2. Dequeue: 이 연산자는 대기열에서 요소를 제거하는 데 사용됩니다.
3. IsEmpty: 이 작업은 대기열이 비어 있고 더 이상 대기열에서 제거할 수 없는지 여부를 확인하는 데 사용됩니다.
4. IsFull: 이 연산자는 대기열이 가득 차서 추가 대기열 추가를 처리할 수 없는지 확인합니다.
5. Peek: Peek 연산자는 할당된 시퀀스에서 제거하지 않고 대기열에서 예상 데이터 값/요소를 단순히 호출/표시합니다.
upGrad.com의 유익한 블로그를 통해 데이터 과학이 중요한 이유와 비즈니스에 가치를 더하는 이유를 알아보십시오 .
데이터 구조의 우선 순위 큐
우선 순위 대기열에는 각 요소와 연결된 추가 우선 순위가 있습니다. 그들은 전통적인 대기열과 같은 FIFO 접근 방식을 따르지 않습니다. 대신, 데이터 구조의 우선 순위 큐는 '높은 우선 순위' 요소가 '낮은 우선 순위' 요소보다 먼저 제공되도록 배열됩니다.
요소의 값은 요소에 우선순위 값을 할당할 때 종종 고려됩니다. 우선순위 큐는 큐에서 다음 요소를 제거하려고 할 때 가장 높은 우선순위 요소가 먼저 검색되는 방식에서 기존 큐와 다릅니다.
우선 순위 대기열의 또 다른 전제 조건은 이러한 대기열에 입력된 데이터가 순차적으로 정렬되어야 한다는 것입니다. 즉, 개별 데이터 요소는 배열이 더 낮은 것에서 더 큰 것 또는 더 큰 것에서 더 낮은 순서로 배열될 수 있는 방식으로 서로 비교할 수 있어야 합니다. 이는 대기열의 요소를 서로 비교하여 상대적인 우선 순위로 할당하는 데 필요합니다.
데이터 구조에서 우선 순위 큐 의 응용 프로그램은 일반적으로 힙, 배열, 연결 목록 또는 BST와 같은 정렬되지 않은 다른 데이터 구조와의 조합을 포함합니다. 힙은 우선순위 큐를 효과적으로 구현하기 위한 조항으로 인해 가장 효율적인 조합 형태를 제공합니다.
데이터 과학의 새로운 분야와 제조 산업에서의 응용에 대해 자세히 알아보려면 upGrad.com의 상세한 블로그를 확인하십시오.
우선 순위 대기열에서 지원되는 작업
우선 순위 대기열의 작업은 입력, 제거, 조회 및 수정된 정보를 처리하는 데 도움이 됩니다. 이러한 작업은 대기열의 요소 사이를 순회하는 데에도 유용합니다. 그것들은 다음과 같습니다:
1. Is_empty : is_empty 작업은 큐에 현재 요소가 있는지 확인합니다.
2. Insert_with_priority: 이 작업은 연결해야 하는 우선 순위 값과 함께 요소를 대기열에 추가합니다.
3. Pull_highest_priority_element: 이 작업은 해당 요소의 값을 반환하면서 대기열에서 가장 높은 우선순위 요소를 제거합니다.
4. Peek: Peek 연산은 예상되는 결과에 따라 '최대값 찾기' 또는 '최소값 찾기'에 사용됩니다. 이 작업은 최대/최소 요소를 제거하지 않고 반환만 합니다.
데이터 구조에서 우선 순위 큐에 힙을 사용하는 이점
우선 순위 큐가 힙을 기반으로 하는 경우 삽입 및 제거에 대해 O(log n) 성능이 관찰됩니다. 이렇게 하면 성능이 향상되고 O(n) 함수는 'n' 요소 집합에서 빌드됩니다. 힙과 피보나치 힙을 페어링하면 우선 순위 대기열 작업에 더 나은 범위를 제공합니다.
데이터 구조의 우선 순위 대기열 및 프로그래밍 도메인과 관련된 기타 여러 중요한 개념에 대해 자세히 알아보려면 upGrad의 온라인 과정에 등록 하십시오 .
우선순위 큐 및 정렬 요소
계산 복잡성을 고려하면 우선 순위 대기열은 고유한 속성으로 인해 정렬 알고리즘에 해당합니다. 예를 들어 정렬이 필요한 모든 요소를 수집한 다음 우선 순위 큐에 삽입해야 합니다.
그런 다음 요소를 순차적으로 제거하면 결과는 요소의 정렬된 순서가 됩니다. 힙 정렬, 스무드 정렬, 선택 정렬, 삽입 정렬 및 트리 정렬은 데이터 구조의 우선 순위 대기열과 동등한 상관 관계를 공유하는 일부 정렬 알고리즘의 이름입니다.
우선순위 큐의 적용
데이터 구조의 우선 순위 큐는 일반적으로 힙 데이터 구조와 함께 구현됩니다. 탐색되지 않은 경로를 시퀀싱, 정렬 및 추적하기 위한 시뮬레이션에 사용됩니다. 두 가지 유형의 우선 순위 대기열: 오름차순 및 내림차순에는 고유한 사용 집합이 있습니다. 이러한 응용 프로그램 중 일부는 다음과 같습니다.
- 대역폭 관리
- 이산 이벤트 시뮬레이션
- 다익스트라 알고리즘
- 허프만 코딩
- 최상 우선 검색 알고리즘
- ROAM 삼각 측량 알고리즘
- 최소 스패닝 트리에 대한 Prim 알고리즘
결론
현재 약 50억 명의 소비자가 데이터에 직간접적으로 연결되어 있습니다. 2025년까지 60억 명이 넘는 사람들이 빅 데이터에 연결될 것입니다. IDC는 데이터가 10배 증가할 것으로 예측하고 데이터 과학자에 대한 높은 수요를 예상합니다. 데이터 구조 의 우선 순위 큐는 힙 데이터 구조와의 밀접한 상관 관계 및 적용으로 인해 프로그래머와 데이터 과학자에게 중요한 개념입니다.
데이터 과학에 대해 자세히 알아보려면 IIIT-B & upGrad의 데이터 과학 PG 디플로마를 확인하십시오. 이 디플로마는 실무 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 전문가와의 멘토링, 1- 업계 멘토와 일대일, 400시간 이상의 학습 및 최고의 기업과의 취업 지원.
리버풀 존 무어스 대학교(Liverpool John Moores University)의 컴퓨터 공학 온라인 국제 석사 과정 또는 풀 스택 소프트웨어 개발 과정 , DevOps 등의 PGD 과정에 등록하면 프로그래머로서의 고용 전망을 향상시킬 수 있습니다.
세계 최고의 대학에서 온라인으로 데이터 과학 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
우선 순위 대기열은 여러 알고리즘과 여러 실제 응용 프로그램에 적용됩니다. 이들 중 일부는 아래에 설명되어 있습니다: 스택과 큐는 모두 선형 데이터 구조입니다. 다음은 이러한 두 데이터 구조 간의 주요 차이점을 보여줍니다. 배열을 사용하여 우선순위 큐를 구현하기 위해서는 요소의 값과 우선순위를 저장하기 위한 구조체를 생성한 다음, 해당 구조체의 배열을 생성하여 요소를 저장합니다. 이 구현에는 다음 작업이 포함됩니다.우선 순위 큐의 응용 프로그램을 설명하시겠습니까?
1. 허프만 알고리즘: 데이터 압축의 허프만 알고리즘에서 생성된 허프만 트리는 우선순위 큐를 사용하여 트리를 구현합니다.
2. Prim's Algorithm : 이 알고리즘은 우선순위 큐를 사용하여 정확한 최소 기능의 프로세스 속도를 높입니다.
3. Dijkstra의 알고리즘: 이 알고리즘은 힙 또는 우선순위 큐를 사용하여 최소값을 추출합니다. 우선 순위 대기열은 최소값을 얻는 프로세스를 매우 효율적으로 만듭니다.
4. 운영 체제: 우선 순위 큐는 로드 밸런싱 및 인터럽트 처리와 같은 여러 운영 체제 프로세스에서 사용됩니다. 스택과 큐를 구별하시겠습니까?
스택 - 요소는 LIFO 원리에 따라 작동됩니다. 즉, 먼저 삽입된 요소가 마지막에 제거되는 요소입니다. 요소는 top이라는 단일 끝에서만 삽입하거나 제거할 수 있습니다. 삽입 작업은 푸시 작업이라고도 합니다.
대기열 - 요소는 FIFO 원칙에 따라 작동됩니다. 즉, 먼저 삽입된 요소가 먼저 제거되는 요소입니다. 삽입 작업은 큐에 넣기 작업이라고도 합니다. 배열을 사용하여 우선 순위 대기열을 어떻게 구현할 수 있습니까?
enqueue() - 삽입 프로세스라고도 하는 이 함수는 큐에 요소를 삽입하는 데 사용됩니다.
peek() - 이 함수는 배열을 탐색하여 우선 순위가 가장 높은 요소를 반환합니다. 우선 순위가 같은 두 개의 요소를 찾으면 그 중 가장 높은 값의 요소를 반환합니다.
dequeue() - dequeue() 함수는 peek() 함수에서 반환된 요소의 왼쪽으로 모든 요소를 1 위치로 이동하고 큐의 크기를 줄이는 데 사용됩니다.