Mulsanne2 / DS_Project_2_2022_2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DS_Project2_2022_2

2022-2 Data Structure Project #2

Due date: 2022/11/17 23h 59m 59s.

본 프로젝트는 상품 추천 프로그램을 구현하는 것으로 상세한 설명은 프로젝트 문서와 다음 설명을 참고한다.

본 프로젝트에서는 FP-Growth와 B+-Tree를 이용하여 상품 추천 프로그램을 구현한다. 이 프로그램은 장바구니 데이터에서 같이 구매한 상품들을 받아 FP-Growth를 구축한다. FP-Growth는 상품들의 연관성을 Tree 구조로 저장하고 있는 FP-Tree와 상품별 빈도수 및 정보, 해당 상품과 연결된 FP-Tree의 상품 노드들을 관리하는 Header Table로 구성된다. FP-Growth 구축 단계에서 연관된 상품들을 묶은 Frequent Pattern들은 SAVE 명령어를 통해 result.txt에 빈도수, 상품 순으로 저장한다. Frequent Pattern들이 저장된 result.txt는 BTLOAD 명령어를 통해 빈도수를 기준으로 B+-Tree에 저장이 된다. B+-Tree는 IndexNode와 DataNode로 구성된다. IndexNode는 DataNode를 찾기 위한 Node이고 DataNode는 해당 빈도수를 가지는 Frequent Pattern들이 저장된 Node이다. 채점 기준은 FP-Tree와 Header Table 생성 및 연결과 B+-Tree이며, FP-Growth의 Frequent Pattern들을 찾아 result.txt 파일로 저장하는 것은 가산점으로 부여된다.

그림1

Notice

Notice !! 윈도우에서 리눅스로 단순 파일 복사 및 드래그는 파일 인코딩 변환 문제가 발생 할 수 있으니 반드시 리눅스 환경에서 파일을 재생성 후 테스트 바랍니다.

Notice !!설계와 실습을 모두 수강하시는 분은 실습 과제제출란에만 제출바랍니다.

Notice !!log.txt의 출력 포맷에서 모든 구분자는 '\t'이 아닌 스페이스바(' ')로 하시면 됩니다.


1. 프로젝트 문서 및 소스코드 수정사항

10/13 - ver1 업로드
11/02 - testcase1, result1 추가(2, 3도 이번주 내로 추가 예정)

2. 자주들어오는 질문

Q. market.txt와 result.txt는 제공하지 않나요?

A. 추후 제공하도록 하겠습니다.


Knowledge

아래 명령어 예시에서 앞의 $ 로 시작되는 부분은 명령어 입력 부분이고, 그 외 는 출력 부분임
리눅스 명령어 요약
  1. ls : list로 현재 작업중인 디렉토리의 파일 및 포함된 디렉토리 목록들을 표시 ( -a, -l 속성으로 자세한 출력 가능)
  2. pwd : print working directory로 현재 작업중인 디렉토리의 절대경로 위치 출력
  3. cd : change directory로 디렉토리 를 변경( . : 현재 디렉토리, .. : 상위 디렉토리 )
$ ls
Documents Download
$ ls -l
drwxr-xr-x 2 user user     4096 Oct 05  2020 Documents
drwxr-xr-x 2 user user     4096 Oct 05  2020 Downloads
$ pwd
/home/user
$ cd Download
$ pwd
/home/user/Downloads

requirement

먼저 해당 github에 저장되어 있는 base 코드를 다운받는다.
$ sudo apt-get install git
$ git clone https://github.com/DSLDataStorage/DS_Project_2_2022_2.git

how to compile this project

make명령어 실행 후 ls명령어를 통해 해당 디렉토리를 확인해 보면 run 이라는 파일이 생긴것을 확인 할 수 있다.
$ make
g++ -std=c++11 -g -o run HeaderTable.cpp FPNode.cpp BpTree.cpp Manager.cpp main.cpp FPGrowth.cpp BpTree.h Manager.h FrequentPatternNode.h BpTreeNode.h FPGrowth.h BpTreeIndexNode.h HeaderTable.h FPNode.h BpTreeDataNode.h

$ ls
BpTree.cpp BpTreeNode.h FPNode.cpp main.cpp market.txt BpTreeDataNode.h command.txt FPNode.h makefile BpTree.h FPGrowth.cpp HeaderTable.cpp Manager.cpp FrequentPatternNode.h BpTreeIndexNode.h FPGrowth.h HeaderTable.h Manager.h **run**

how to run code

./(생성된 실행파일) 의 형식으로 생성된 run 실행파일을 실행한다.
실행하면 결과로 result.txt파일과 log.txt파일이 생성되면서 결과가 result.txt와 log.txt에 저장된다.
$ ./run
$ cat log.txt
==> command 1) LOAD
Success

About


Languages

Language:C++ 99.1%Language:Makefile 0.9%