https://github.com/sonhm3029/infomation-theory-small-project
https://github.com/sonhm3029/infomation-theory-small-project
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sonhm3029/infomation-theory-small-project
- Owner: sonhm3029
- Created: 2021-12-20T08:32:39.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-12-24T07:50:58.000Z (over 3 years ago)
- Last Synced: 2025-01-17T01:25:00.996Z (4 months ago)
- Language: C++
- Size: 10.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Information-Theory-Small-Project
Đây là project nhỏ về lý thuyết thông tin gồm các chức năng:
- Tính toán các thông số cơ bản của tin: Lượng tin riêng, Entropy
- Tính toán khả năng phân tách của bộ mã
- Dùng thuật toán Huffman để nén file text, encode, decode...## I. Tính toán Lượng tin, Entropy
**Cách dùng:**
Trong file `main.cpp`
Sử dụng class `NguonTin` trong thư viện [NguonTin.h](./NguonTin.h) gồm các hàm:
Hàm | Chức năng
----|----------
`void khoi_tao_nguon_tin()`| Khởi tạo nguồn tin gồm các Xi với xác suất tương ứng
`void show_nguon_tin()`| In ra màn hình nguồn tin đã khởi tạo
`double luong_tin_tb()`| Tính toán lượng tin trung bình của nguồn tin
`double entropy()`| Tính toán entropy của nguồn tinChương trình mẫu:
```C++
int main() {
// Khởi tạo nguồn tin
NguonTin example;
example.khoi_tao_nguon_tin();// Show nguồn tin đã nhập
example.show_nguon_tin();// Tính toán lượng tin trung bình:
example.luong_tin_tb();// Tính toán entropy:
example.entropy();
}
```Ngoài ra để tính lượng tin riêng ta có thể dùng hàm
```C++
double luong_tin_rieng(double p_xi) {
return -(log2(p_xi));
}
```Hàm `luong_tin_rieng()` được định nghĩa trong thư viện [helper.h](./helper.h)
## II. Tính toán khả năng phân tách của bộ mã
**Cách dùng:**
Trong file `main.cpp`
Sử dụng class `BoMa` trong thư viện [BoMa.h](./BoMa.h) gồm các hàm:
Hàm | Chức năng
----|----------
`void khoi_tao()` | Khởi tạo bộ mã
`void show_bo_ma()` | In ra màn hình bộ mã đã khởi tạo
`string giai_ma()` | Kiểm tra xem bộ mã đã cho có phân tách được không, nếu có thì độ chậm giải mã là bao nhiêu
`bool isPrefix()` | Kiểm tra xem bộ mã đã cho có tính prefix khôngChương trình mẫu:
```C++
int main() {
// Khởi tạo bộ mã
BoMa example;
example.khoi_tao();// In bộ mã đã tạo
example.show_bo_ma();// Kiểm tra xem bộ mã
// có phân tách được không
cout<