SlideShare uma empresa Scribd logo
1 de 17
Huffman encoding based Text file
compression program
컴퓨터공학과
2018202016 김윤곤
2017202062 정구찬
고급 C 프로그래밍
Huffman compression program
• Introduction :
-주제 선정 배경 :
1. 학교 과제 업로드 시스템에 과제를 제출 할 때 용량 초과 문제로, 압축 프로그램
을 이용해야만 하는 상황이 많았음.
2. 대부분의 압축 프로그램은 프로그램 자체가 무겁고, 마우스 클릭 기반으로만 압축
을 할 수 있어서, 불편함을 느꼈음.
3. 간단한 문서 포멧의 경우, 커맨드 기반으로 가볍고 빠르게 압축 할 수 있는 비영
리적 프로그램의 필요성을 느낌.
Huffman compression program
• Introduction :
컴퓨터는 0과 1로 이루어진 이진수 체계를 통해, 데이터를 처리하기 때문에, 우리가 컴퓨터로
문서 작업을 처리할 때 입력하는 문자, 기호, 숫자 등의 체계는 컴퓨터에서 이진수 체계로 변
환되어 처리되며 이러한 방식을 부호화라고 부른다.
Huffman compression program
• Introduction :
-부호화 방법
->한 문자당 변환되는 이진수의 길이를 고정시키는 고정 길이 부호 방식
->문자 마다 변환되는 이진수의 길이를 다르게 하는 가변 길이 부호화 방식
-고정 길이 부호 방식의 단점 :
문자 별로 변환되는 이진수의 길이가 동일하기 때문에, 가변 길이 방식에 비해, 데이터의 크기
가 크다!
=> 데이터에서 자주 등장하는 문자를 짧은 길이의 이진수로 변환하고, 자주 등장하지 않는
문자에 긴 길이의 이진수를 할당하면, 고정 길이 부호화 방식에 비해, 데이터를 부호화 하기
위해 필요한 비트 수를 훨씬 줄일 수 있다!
Huffman compression program
• Introduction :
-허프만 인코딩 :
가변 길이 방식의 부호화/복호화 방식인 엔트로피 인코딩 기법 중 하나
-본 프로젝트에서는 언급한 허프만 인코딩/디코딩 방식을 이용하여, 기존의 텍스트 파일을 이
진 파일로 압축하여 보관하고, 필요시 다시 복원할 수 있는 사용자 압축 프로그램을 제안
Huffman compression program
• 목표
- Encoder
1. 마우스 클릭 기반의 인터페이스가 아닌, 파일의 절대 경로 입력을 통한, 커맨드 입력 기반의 인터페이
스를 제공한다.
2. 압축을 진행하는 동안, 압축 진행률을 제공해, 사용자는 압축이 얼마나 진행되었는지 확인한다.
3. 압축이 완료되면, 압축률(기존 파일에 비해 얼마나 파일의 크기가 줄었는지에 관한 지표), 압축 시간
(압축을 진행하는데 소요된 시간), 기존의 파일 크기, 압축된 파일의 크기를 사용자에게 제공한다.
-Decoder
1. 압축 해제를 하는 동안, 압축 해제가 얼마나 진행 되었는지에 대한 인터페이스를 제공한다.
Huffman compression program
• Related Work :
-반디집 상용 압축 프로그램
(2/7)
Huffman compression program
• Our Proposal :
-커맨드 기반 User interface 제공:
->문서 기반의 파일을 커맨드 기반으로 빠르게 압축 할
수 있다.
-가벼운 크기의 프로그램 :
->기존 프로그램에 비해 용량이 가볍다.
-시스템 구성도(다음 장에서 계속)
(3/7)
Huffman compression program
- 시스템 구성도(Cont)
User interface 설계
(3/7)
Huffman compression program
- 시스템 구성도(Cont)
내부 logic 설계
(3/7)
Huffman compression program
• Experimented Method :
- 파일에 대한 압축 결과
1. 압축률(압축파일크기/원본파일크기)
2. 압축시간(running time)
3. Text Compare 사이트를 통해, 복원 중 누락 내
용이 없다는 것을 확인
(4/7)
Huffman compression program
(6/7)
User Interface
-Experimeted Result
Huffman compression program
User Interface (encode)
1. txt 파일의 정보(경로)를 입력
2. 압축 할 경로를 입력
3. 압축 파일 명을 입력
4. Encoding에 대한 정보 출력
test1.txt 파일 압축 과정으로
사용자가 입력한 파일 명(test1_zip)
저장된 test1_zip_code.hbs & table.hbs 파
일
1
2
3
4
-Experimeted Result
Huffman compression program
User Interface (decode)
1. 압축 파일(hbs)의 정보(경로)를 입력
2. 압축 해제 시 저장 할 경로를 입력
3. 압축 해제 시 저장 할 파일 명을 입력
4. decoding에 대한 정보 출력
test1_zip_code & table.hbs 파일 압축 해제
과정으로
test1_zip.txt 파일 출력
1
2
3
4
-Experimeted Result
Huffman compression program
• Conclusion :
압축률 : 6647/12119 = 54.8% -Huffman table 출력
(6/7)
Text compare 프로그램을
이용하여, 원본 파일과 복
원 파일을 비교 해 본 결
과 두 파일의 내용이 완전
일치 하는 것으로 확인 됨
Huffman compression program
• References:
-data structures
: heap based priority queue, B tree based map
table
https://github.com/topics/data-structures-c
: linear probe hash table
https://troydhanson.github.io/uthash/
http://compression.ru/download/articles/huff/huffman_1952_minimu
m-redundancy-codes.pdf
:huffman encoding 관련 논문
(*해당 source code들은 모두 비영리 목적 활용이 허용된 source로,
code를 일부 가져와, 과제의 조건에 맞게 customize하여 활용하였음)
(7/7)
감사합니다

Mais conteúdo relacionado

Semelhante a 고급C프로그래밍_김윤곤_정구찬_프로젝트.pptx

파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)옥시즌
 
리멤버 데스크톱 앱 개발기
리멤버 데스크톱 앱 개발기리멤버 데스크톱 앱 개발기
리멤버 데스크톱 앱 개발기Tom Kim
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfHo Jeong Im
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110seungil
 
X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110seungil
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안Ji-Woong Choi
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍CHANG-HYUN LEE
 
오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3Changwoo Ryu
 
33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"hyu_jaram
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Jinwoo Kim
 
오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2Changwoo Ryu
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 

Semelhante a 고급C프로그래밍_김윤곤_정구찬_프로젝트.pptx (20)

파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)
 
리멤버 데스크톱 앱 개발기
리멤버 데스크톱 앱 개발기리멤버 데스크톱 앱 개발기
리멤버 데스크톱 앱 개발기
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
Merge revesed
Merge revesedMerge revesed
Merge revesed
 
X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110
 
X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110X1 미디어변환 아카이빙 제안서-v1.0_20111110
X1 미디어변환 아카이빙 제안서-v1.0_20111110
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3
 
33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드Window에서 Rcplex 설치 가이드
Window에서 Rcplex 설치 가이드
 
오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2
 
CDN overview
CDN overviewCDN overview
CDN overview
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 

고급C프로그래밍_김윤곤_정구찬_프로젝트.pptx

  • 1. Huffman encoding based Text file compression program 컴퓨터공학과 2018202016 김윤곤 2017202062 정구찬 고급 C 프로그래밍
  • 2. Huffman compression program • Introduction : -주제 선정 배경 : 1. 학교 과제 업로드 시스템에 과제를 제출 할 때 용량 초과 문제로, 압축 프로그램 을 이용해야만 하는 상황이 많았음. 2. 대부분의 압축 프로그램은 프로그램 자체가 무겁고, 마우스 클릭 기반으로만 압축 을 할 수 있어서, 불편함을 느꼈음. 3. 간단한 문서 포멧의 경우, 커맨드 기반으로 가볍고 빠르게 압축 할 수 있는 비영 리적 프로그램의 필요성을 느낌.
  • 3. Huffman compression program • Introduction : 컴퓨터는 0과 1로 이루어진 이진수 체계를 통해, 데이터를 처리하기 때문에, 우리가 컴퓨터로 문서 작업을 처리할 때 입력하는 문자, 기호, 숫자 등의 체계는 컴퓨터에서 이진수 체계로 변 환되어 처리되며 이러한 방식을 부호화라고 부른다.
  • 4. Huffman compression program • Introduction : -부호화 방법 ->한 문자당 변환되는 이진수의 길이를 고정시키는 고정 길이 부호 방식 ->문자 마다 변환되는 이진수의 길이를 다르게 하는 가변 길이 부호화 방식 -고정 길이 부호 방식의 단점 : 문자 별로 변환되는 이진수의 길이가 동일하기 때문에, 가변 길이 방식에 비해, 데이터의 크기 가 크다! => 데이터에서 자주 등장하는 문자를 짧은 길이의 이진수로 변환하고, 자주 등장하지 않는 문자에 긴 길이의 이진수를 할당하면, 고정 길이 부호화 방식에 비해, 데이터를 부호화 하기 위해 필요한 비트 수를 훨씬 줄일 수 있다!
  • 5. Huffman compression program • Introduction : -허프만 인코딩 : 가변 길이 방식의 부호화/복호화 방식인 엔트로피 인코딩 기법 중 하나 -본 프로젝트에서는 언급한 허프만 인코딩/디코딩 방식을 이용하여, 기존의 텍스트 파일을 이 진 파일로 압축하여 보관하고, 필요시 다시 복원할 수 있는 사용자 압축 프로그램을 제안
  • 6. Huffman compression program • 목표 - Encoder 1. 마우스 클릭 기반의 인터페이스가 아닌, 파일의 절대 경로 입력을 통한, 커맨드 입력 기반의 인터페이 스를 제공한다. 2. 압축을 진행하는 동안, 압축 진행률을 제공해, 사용자는 압축이 얼마나 진행되었는지 확인한다. 3. 압축이 완료되면, 압축률(기존 파일에 비해 얼마나 파일의 크기가 줄었는지에 관한 지표), 압축 시간 (압축을 진행하는데 소요된 시간), 기존의 파일 크기, 압축된 파일의 크기를 사용자에게 제공한다. -Decoder 1. 압축 해제를 하는 동안, 압축 해제가 얼마나 진행 되었는지에 대한 인터페이스를 제공한다.
  • 7. Huffman compression program • Related Work : -반디집 상용 압축 프로그램 (2/7)
  • 8. Huffman compression program • Our Proposal : -커맨드 기반 User interface 제공: ->문서 기반의 파일을 커맨드 기반으로 빠르게 압축 할 수 있다. -가벼운 크기의 프로그램 : ->기존 프로그램에 비해 용량이 가볍다. -시스템 구성도(다음 장에서 계속) (3/7)
  • 9. Huffman compression program - 시스템 구성도(Cont) User interface 설계 (3/7)
  • 10. Huffman compression program - 시스템 구성도(Cont) 내부 logic 설계 (3/7)
  • 11. Huffman compression program • Experimented Method : - 파일에 대한 압축 결과 1. 압축률(압축파일크기/원본파일크기) 2. 압축시간(running time) 3. Text Compare 사이트를 통해, 복원 중 누락 내 용이 없다는 것을 확인 (4/7)
  • 12. Huffman compression program (6/7) User Interface -Experimeted Result
  • 13. Huffman compression program User Interface (encode) 1. txt 파일의 정보(경로)를 입력 2. 압축 할 경로를 입력 3. 압축 파일 명을 입력 4. Encoding에 대한 정보 출력 test1.txt 파일 압축 과정으로 사용자가 입력한 파일 명(test1_zip) 저장된 test1_zip_code.hbs & table.hbs 파 일 1 2 3 4 -Experimeted Result
  • 14. Huffman compression program User Interface (decode) 1. 압축 파일(hbs)의 정보(경로)를 입력 2. 압축 해제 시 저장 할 경로를 입력 3. 압축 해제 시 저장 할 파일 명을 입력 4. decoding에 대한 정보 출력 test1_zip_code & table.hbs 파일 압축 해제 과정으로 test1_zip.txt 파일 출력 1 2 3 4 -Experimeted Result
  • 15. Huffman compression program • Conclusion : 압축률 : 6647/12119 = 54.8% -Huffman table 출력 (6/7) Text compare 프로그램을 이용하여, 원본 파일과 복 원 파일을 비교 해 본 결 과 두 파일의 내용이 완전 일치 하는 것으로 확인 됨
  • 16. Huffman compression program • References: -data structures : heap based priority queue, B tree based map table https://github.com/topics/data-structures-c : linear probe hash table https://troydhanson.github.io/uthash/ http://compression.ru/download/articles/huff/huffman_1952_minimu m-redundancy-codes.pdf :huffman encoding 관련 논문 (*해당 source code들은 모두 비영리 목적 활용이 허용된 source로, code를 일부 가져와, 과제의 조건에 맞게 customize하여 활용하였음) (7/7)