• 제목/요약/키워드: 퀵정렬

검색결과 16건 처리시간 0.024초

SIMD 기반의 VBP 기법을 적용한 효율적인 퀵정렬의 구현 (An Implementation of Efficient Quicksort Utilizing SIMD-Based VBP Technique)

  • 홍길석;김홍연;강성현;민준기
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제23권8호
    • /
    • pp.498-503
    • /
    • 2017
  • SIMD(Single Instruction Multiple Data)는 대표적인 병렬화 아키텍처 중 하나로, SIMD 레지스터에 적재된 여러 개의 데이터들을 하나의 명령어로 처리하는 기술이다. 퀵정렬(Quicksort)은 데이터 값들이 리스트로 저장되어 있을 때, 임의의 위치에 있는 데이터 값을 피봇으로 하여 그것보다 작은 값은 왼편으로, 큰 값은 오른편으로 분할하여 생성된 두 개의 서브리스트에 대하여 같은 작업을 반복함으로써 데이터 값들을 정렬하는 정렬 알고리즘이다. 본 연구에서는 SIMD 명령어를 이용하여 파이프라인 아키텍처에서 조건 예측 실패에 따른 성능 저하를 유발하지 않도록 분기 조건을 최소로 사용하는 효율적인 퀵정렬(Quicksort) 알고리즘을 제안한다. 또한, VBP(Vertical Bit Parallel) 기법과 얼리 프루닝(early pruning) 기법을 적용하여 SIMD 레지스터에 데이터를 바이트 단위로 적재함으로써 퀵 정렬 알고리즘의 성능을 향상하였다.

3-점 평균 피벗 퀵정렬 (3-Points Average Pivot Quicksort)

  • 이상운
    • 한국인터넷방송통신학회논문지
    • /
    • 제14권6호
    • /
    • pp.295-301
    • /
    • 2014
  • 데이터를 정렬하는 방법들 중 O(n log n)보다 빠른 방법은 알려져 있지 않고 있으며, 가장 빠른 방법으로 퀵정렬이 있다. n개의 데이터에 대해 퀵정렬은 최적의 경우 O(n log n), 최악의 경우 $O(n^2)$ 수행 복잡도를 갖고 있다. 본 논문에서는 퀵정렬보다 빠르게 정렬하는 방법으로, 분할된 리스트의 첫 번째 L=a[s], 마지막 H=a[e]과 중간 $M=[{\lfloor}(s+e)/2{\rfloor}]$에 대해 P=(L+M+H)/3의 3-점 평균을 피벗값으로 결정하는 방법을 제안하였다. 실험 결과 제안된 3-점 평균 피벗 퀵정렬은 최적, 평균, 최악 모두 수행 복잡도가 O(n log n)으로 퀵정렬의 $O(n^2)$ 정렬 시간을 단축시킬 수 있었다.

유전 알고리즘을 이용한 정렬 알고리즘의 최악의 인스턴스 탐색 (Finding the Worst-case Instances of Some Sorting Algorithms Using Genetic Algorithms)

  • 전소영;김용혁
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2010년도 한국컴퓨터종합학술대회논문집 Vol.37 No.1(B)
    • /
    • pp.1-5
    • /
    • 2010
  • 정렬 알고리즘에서 사용한 원소 간 비교횟수를 기준으로, 비교횟수가 많게 되는 순열을 최악의 인스턴스(worst-case instance)라 명명하고 이를 찾기 위해 유전 알고리즘(genetic algorithm)을 사용하였다. 잘 알려진 퀵 정렬(quick sort), 머지 정렬(merge sort), 힙 정렬(heap sort), 삽입 정렬(insertion sort), 쉘 정렬(shell sort), 개선된 퀵 정렬(advanced quick sort)에 대해서 실험하였다. 머지 정렬과 삽입 정렬에 대해 탐색한 인스턴스는 최악의 인스턴스에 거의 근접하였다. 퀵 정렬은 크기가 증가함에 따라 최악의 인스턴스 탐색이 어려웠다. 나머지 정렬에 대해서 찾은 인스턴스는 최악의 인스턴스인지 이론적으로 보장할 수 없지만, 임의의 1,000개 순열을 정렬해서 얻은 비교횟수들의 평균치보다는 훨씬 높았다. 본 논문의 최악의 인스턴스를 탐색하는 시도는 알고리즘의 성능 검증을 위한 테스트 데이터를 생성한다는 점에서 의미가 크다.

  • PDF

새로운 정렬 알고리즘 : 정보 블록 정렬 알고리즘 (A New Sort Algorithm : Information Block Sort Algorithm(IBSA))

  • 송태옥;김태영
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 가을 학술발표논문집 Vol.27 No.2 (1)
    • /
    • pp.560-562
    • /
    • 2000
  • 본 논문에서는 정보블록알고리즘(IBPA;Information Block Preprocessing Algorithm)을 이용한 정보블록 정렬알고리즘 (IBSA; Information Block Sort Algotithm)을 제안하고 그 성능을 평가하였다. IBSA의 시간복잡도는 O(N)이며, 데이터의 분포상태에 영향을 받지 않는다. IBPA의 성능을 측정해본 결과, 2백만개의 랜덤데이터를 정렬한 경우, 중복값 허용의 경우 (a)는 퀵 정렬의 32.42%, 기수정렬의 9%정도의 비교회수만으로도 정렬할 수 있음을 보여주었으며, 중복값이 없는 경우 (b)는 퀵 정렬의 53.12%, 기수정렬의 12.79%정도의 비교회수만으로도 정렬할 수 있음을 보여주었다.

  • PDF

정보 블록 정렬 알고리즘 (A New Sort Algorithm : Information Block Sort Algorithm(IBSA))

  • 송태옥;정상욱;김태영
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2000년도 추계학술발표논문집 (상)
    • /
    • pp.195-198
    • /
    • 2000
  • 본 논문에서는 정보블록알고리즘(IBPA; Information Block Preprocessing Algorithm)을 이용한 정보블록 정렬알고리즘(IBSA; Information Block Sort Algorithm)을 제안하고 그 성능을 평가하였다. IBSA의 시간복잡도는 O(N)이며, 데이터의 분포상태에 영향을 받지 않는다. IBPA의 성능을 측정해본 결과, 2백만개의 랜덤데이터를 정렬한 경우, 중복 값 허용의 경우(a)는 퀵 정렬의 32.42%, 기수정렬의 9%정도의 비교회수만으로도 정렬할 수 있음을 보여주었으며, 중복 값이 없는 경우(b)는 퀵 정렬의 53.12%, 기수정렬의 12.79%정도의 비교회수만으로도 정렬할 수 있음을 보여주었다.

  • PDF

범위 피벗 퀵정렬 (Quicksort Using Range Pivot)

  • 이상운
    • 한국컴퓨터정보학회논문지
    • /
    • 제17권4호
    • /
    • pp.139-145
    • /
    • 2012
  • 퀵정렬은 피벗값을 최좌측, 최우측, 중간 값 또는 랜덤하게 결정하는 방법을 적용하고 있다. 본 논문은 범위 중간값을 $P_0$피벗값으로 결정하고 계속적으로 양분하는 퀵정렬 방법을 제안하였다. 제안된 방법은 길이가 $n$인 리스트 $A$$i$=1, $j$=$n$에서 최소값 $L$과 최대값 $H$를 탐색하여 초기 피벗 키 값으로 $P_0=(H+L)/2$로 설정하고 $i$=$j$ 또는 $i$>$j$가 될 때까지 $a[i]{\geq}P_0$, $a[j]<P_0$를 교환하는 방식을 적용하였다. 피벗값에 따라 값의 교환이 완료되면 리스트 $A_0$는2개의 부분리스트 $a[1]{\leq}A_1{\leq}a[j]$$a[i]{\leq}A_2{\leq}a[n]$으로 분할되며 이 경우 피벗 키는 $P_1=P_0/2$, $P_2=P_0+P_1$으로 설정된다. 이러한 과정을 분할된 리스트의 길이가2일 때까지 수행되며, 리스트 길이가 2이고, $a$[1]>$a$[2]이면 $a[1]{\leftrightarrow}a[2]$로 교환한다. 제안된 방법은 퀵정렬에 비해 빠르며, 최악의 경우 수행 복잡도 $O(n^2)$$O(n{\log}n)$으로 향상시켰다.

점근적 분석 모형에 기초한 유한개 레코드 정렬 알고리즘 효율성의 확률적 분석 (Probabilistic analysis of efficiencies for sorting algorithms with a finite number of records based on an asymptotic algorithm analysis)

  • 김숙영
    • 한국컴퓨터산업학회논문지
    • /
    • 제5권2호
    • /
    • pp.325-330
    • /
    • 2004
  • 정렬 알고리즘 효율성을 분석하는 O 표기법은 자료 크기에 관한 모형을 구축하지 않고 자료 크기가 무한하게 증가될 때의 정렬 비교 횟수의 증가율에 관한 대략적인 정보만을 제공하는 점근적 알고리즘 분석 결과이다 그러므로 제한된 유한개의 자료들만을 정렬하는 응용 면에서도 정렬 알고리즘 효율성 검정이 필요하다. 9,000개 이하의 수치 자료에 삽입 정렬과 퀵 정렬 알고리즘을 적용하여 자료 개수에 따른 정렬 시 필요한 원소 교환 횟수 관계 모형을 구축하였다. 효율성이 O(nlogn)으로 분류되는 퀵 정렬의 경우 추정된 모형은 S=0.9305 $N^{1.1339}$으로, O( $n^2$) 으로 분류되는 퀵 정렬에서는 S=0.12232 $N^{2.013}$으로 추정되었다. 또한 모형의 적합도 검정 결과 정렬 시 자료 개수에 따른 원소 교환 횟수 관계가 추정된 모형들에 의하여 99% 이상이 설명될 수 있으며 적합성을 증명하는 강한 확률적 증거가 발견 되었다. 본 연구 결과들은 정렬 자료 개수가 적은 경우나 새로 개발된 정렬 알고리즘 효율성에 관한 검정의 필요성을 제시한다.

  • PDF

빠른 계수 정렬법의 제안 (Proposal of Fast Counting Sort)

  • 이상운
    • 한국인터넷방송통신학회논문지
    • /
    • 제15권5호
    • /
    • pp.61-68
    • /
    • 2015
  • 데이터를 비교 정렬하는 방법들 중 O(nlogn)보다 빠른 방법은 알려져 있지 않고 있으며, 가장 빠른 퀵 정렬법은 최적과 평균의 경우 O(nlogn), 최악의 경우 $O(n^2)$ 수행 복잡도를 갖고 있다. 본 논문은 비교 정렬법이 아닌 O(n+k),(k=최대치)의 계수 정렬법을 보다 빠르게 수행하는 O(n+k)의 단순 계수정렬법과 데이터의 자리 수 l의 숫자별 빈도수를 계수하여 해당 가상 버킷에 저장하는 O(ln)의 기수 계수 정렬법을 제안하였다. 6개의 실험 데이터에 제안된 알고리즘을 적용한 결과, 퀵 정렬의 O(nlogn) 또는 $O(n^2)$을 O(n+k) 또는 O(ln)으로 단순화 시킬 수 있었다. 결론적으로 제안된 방법은 계수정렬법과 퀵 정렬법에 비해 보다 빠른 방법이다.

정보 블록 정렬 알고리즘에 관한 연구 (A Study on Information Block Sort Algorithm)

  • 송태옥
    • 컴퓨터교육학회논문지
    • /
    • 제6권3호
    • /
    • pp.1-8
    • /
    • 2003
  • 본 논문에서는 O(NlogN) 의 시간 복잡도와 데이터의 분포상태에 영향을 받지 않는 정보블록 정렬알고리즘(IBSA : Information Block Sort Algorithm)을 제안하고, 시뮬레이터를 이용하여 그 성능을 평가하였다. 2백만 개의 랜덤 데이터를 이용하여 IBSA의 성능을 측정해본 결과, 퀵 정렬의 22%, 개선된 퀵 정렬의 36% 정도의 비교회수만으로도 정렬할 수 있음을 보여주었다.

  • PDF