信息论CH1-4

CH1-4



CH1 绪论

1.信息论:1984年,香农
信息是认识主体(人、生物、机器)所感受的和所表达的事物运动的状态和运动状态变化的方式
2.客观世界三大基本要素

3.信息分为三个层次:语法信息、语义信息、语用信息
4.有效性:频谱复用程度、频谱利用率
可靠性:输出信噪比、传输错误率
安全性:信息加密强度
5.信源->编码器->信道->译码器->信宿
6.信道编码定理、无失真信源编码定理、限失真信源编码定理


CH2 离散信息的度量

在这里插入图片描述
2.1.1自信息
在这里插入图片描述
关于对数的选取
在这里插入图片描述
自信息的含义:
事件发生前→事件发生的不确定性
事件发生后→事件包含的信息量

联合自信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
赫夫曼编码是一种基于编码概率的算法,可以用于数据压缩和信息传输等方面。下面是一个简单的 C++ 实现示例: ```cpp #include <iostream> #include <queue> #include <vector> #include <unordered_map> using namespace std; struct Node { char ch; int freq; Node *left, *right; Node(char ch, int freq) : ch(ch), freq(freq), left(nullptr), right(nullptr) {} ~Node() { delete left; delete right; } }; struct Compare { bool operator()(const Node* a, const Node* b) const { return a->freq > b->freq; } }; Node* buildHuffmanTree(const unordered_map<char, int>& freqMap) { priority_queue<Node*, vector<Node*>, Compare> pq; for (auto& p : freqMap) { pq.push(new Node(p.first, p.second)); } while (pq.size() > 1) { Node *left = pq.top(); pq.pop(); Node *right = pq.top(); pq.pop(); Node *parent = new Node('\0', left->freq + right->freq); parent->left = left; parent->right = right; pq.push(parent); } return pq.top(); } void encodeHuffmanTree(Node* root, string code, unordered_map<char, string>& codeMap) { if (!root) return; if (root->left == nullptr && root->right == nullptr) { codeMap[root->ch] = code; } encodeHuffmanTree(root->left, code + '0', codeMap); encodeHuffmanTree(root->right, code + '1', codeMap); } void encode(const string& str, const unordered_map<char, string>& codeMap) { cout << "Encoded message: "; for (char ch : str) { cout << codeMap.at(ch); } cout << endl; } int main() { string message = "hello world"; unordered_map<char, int> freqMap; for (char ch : message) { freqMap[ch]++; } Node* root = buildHuffmanTree(freqMap); unordered_map<char, string> codeMap; encodeHuffmanTree(root, "", codeMap); encode(message, codeMap); delete root; return 0; } ``` 在这个示例中,首先使用 `unordered_map` 统计了输入字符串中每个字符出现的频率。然后使用一个最小堆来构建赫夫曼树,每次从堆中取出两个频率最小的节点合并成一个新的节点,直到堆中只剩下一个节点为止。接着遍历赫夫曼树,对于每个叶子节点记录下该字符的编码,最终得到一个字符到编码的映射。最后使用该映射对输入字符串进行编码输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值