大数据课程笔记3:Kolmogorov Complexity
这是大数据算法的课程笔记,这节讲的是Kolmogorov Complexity的定义以及三个性质。
定义
先有个图灵机的定义,然后有了一个Universal Turing Machine (UTM)的定义。
假设存在输入yy和输出xx,使用一种Turing Machine TT,运行程序pp,可以从yy中生成xx,定义为x=T(p,y)x = T(p,y)。
定义Kolmogorov Comlexity,基于yy的xx的复杂性定义为argmin|p|\arg \min{| p|}, such that x=T(p,y)x = T(p,y),为H(x|y)H(x|y)。
xx的Kolmogorov复杂性定义为H(x|∅)H(x|\emptyset),即从空集生成xx的图灵机程序长度的最小值,注意其为Turing Machine和数据xx的函数。
三个性质
然后讨论Kolmogorov Comlexity的三个性质: Invariance, Unbounded, Non-computable
Invariance Theorem
Invariance: Given any description language L, the optimal description language is at least as efficient as L, with some constant overhead.
即Kolmogorov Complexity不随Turing Machine的变化而变化,最多差一个有限大的常数。其核心是运行程序pp的Turing Machine的代码长度是固定的,不与pp有关。
例如存在两种Turing Machine,分别使用C++和Java,那么定义在C++和Java的两个Kolmogorov Complexity,最多差一个有限大的常数。编译运行C++的程序和C++程序长度无关,使用Java编写C++运行程序的Java代码长度也是固定的,最大不超过一个常数CC。则有KolmC(Java,p)≤KolmC(C++,p)+KolmC(Java,C++运行程序)\text{KolmC}(\text{Java},p) \le \text{KolmC}(\text{C++},p) + \text{KolmC}(\text{Java},\text{C++运行程序})
这个小于等于号是因为KolmC\text{KolmC}为所有合法程序长度的最小值,而使用Java编写C++运行程序,然后运行程序pp的程序只为合法程序之一。
Unbounded Theorem
Unboundable Kolmogorov complexity: ∀n∃x:K(x)≥n\forall n\exists x : K(x) ≥ n
证明方法是反证法,即假设∃n∀x:K(x)≤n\exists n \forall x:K(x)\le n,在程序长度有限的情况下,最多有2n+12^{n+1}个程序,可能的输出最多有2n+12^{n+1}个。但xx的可能性是无穷的,得到矛盾,假设不成立。
Non-Computable
Kolmogorov complexity is not computable
computable指的是存在Turing Machine计算相应程序。
不可计算性的证明使用的反证法:
假设存在某个Turing Machine的程序,ComputeKolmComplexity(s),计算数据s的Kolmogorov Complexity,程序长度小于CC,其中C≥1MC\ge 1M。
构造程序GG如下:
i = 1while Truefor s in |s| ==iif ComputeKolmComplexity(s) > 2Mreturn s;i = i + 1;
即按照字符串长度,从小到大逐一枚举所有可能字符串,当计算出来的Kolmogorov Complexity大于2M的时候输出,即GG的输出字符串ss的Kolmogorov Complexity大于2M。但是GG的程序长度不超过1M+10001M+1000,所以有1M+1000≥2M1M+1000\ge 2M,导出矛盾。
综上假设不成立,Kolmogorov Complexity不可计算。
大数据课程笔记3:Kolmogorov Complexity相关推荐
- 数据结构大作业_大数据课程笔记
前言: 到目前为止有了一个月的时间,学习了python基础及算法.常用计算库numpy和pandas数据的导入和各种处理.matplotlib和seaborn做数据可视化 以及上周的大数据框架hado ...
- 2021-03-08~09~10~11~12 大数据课程笔记 day47day48day49day50day51
@R星校长 大数据技术之Flink 第一章 初识Flink 在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题 ...
- 2021-02-26~27~28 大数据课程笔记 day37day38day39
@R星校长 音乐数据中心平台 1.1 数据库与ER建模 1.1.1 数据库(DataBase) 数据库是按照数据结构来组织.存储和管理数据的仓库,是一个长期存储在计算机内的.有组织的.可共享的.统 ...
- 2021-03-17~18 大数据课程笔记 day56day57
@R星校长 1 基础概念和Kylin简介 1.1 OLTP与OLAP 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理 ...
- 2021-02-12 大数据课程笔记 day23
@R星校长 redis 概述 为什么使用 redis? 什么是 Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)内存数据库. 它提供六种数据类型来存储值:str ...
- 2021-03-13 大数据课程笔记 day52
@R星校长 基于Flink的城市交通监控平台 1.1 项目整体介绍 近几年来,随着国内经济的快速发展,高速公路建设步伐不断加快,全国机动车辆.驾驶员数量迅速增长,交通管理工作日益繁重,压力与日俱增 ...
- 2021-01-30 大数据课程笔记 day10
@R星校长 课程重点 HDFS 完全分布式搭建(熟练) Hadoop 3.x 新特性(了解) Hadoop Federation(了解) Hadoop HA(掌握) Hadoop HA 集群搭建(熟练 ...
- 2021-01-27 大数据课程笔记 day7
@R星校长 Nginx 问题引入 单个 tomcat 支持最高并发 怎么解决高并发问题,解决单个服务器过载问题? Nginx概述 Nginx 介绍 1. Nginx ("engine x&q ...
- 2021-03-19~20 大数据课程笔记 day58day59
@R星校长 1 Scala 1.1 [重点]Scala六大特性 1) 与java无缝整合 2) 类型自动推断 3) 并发和分布式 4) Trait特质特性 5) Match模式匹配 6) ...
最新文章
- HTML中三维特性,前端进阶系列(三):HTML5新特性
- 基于脑电和特征加权阶段训练的驾驶员疲劳状态估计
- iOS:MBProgressHUD的基本使用
- sqlite数据库的多线程访问问题
- Linux shell条件判断if中的-a到-z的意思
- python写错了怎么更改-Python中修改字符串的四种方法
- linux关闭xdmcp服务,使用Xmanager远程CentOS 7服务器(XDMCP)
- 品茗论道说广播(Broadcast内部机制讲解)
- JZOJ 3807. 【NOIP2014模拟8.25】地砖铺设
- Android下载文件
- 前端学习(1768):前端调试值之内存监控的原理和方法三
- Nodejs线上日志部署
- Beta函数与Gamma函数及其与Beta分布的关系
- makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
- 宁波大学计算机专硕分数线,2019宁波大学研究生分数线汇总(含2016-2019历年复试)...
- Android - 控件android:ems属性
- 功能对等四个原则_“奈达功能对等理论”四个方面的原始出处及定义是什么?...
- 大文件数据恢复-轻松恢复大于4GB的文件
- Rust 错误处理 简记
- Web思维导图实现的技术点分析
热门文章
- 语义分割数据集转物体检测
- 多普勒频移及其解决方案
- 【读书2】【2014】基于MATLAB的雷达信号处理基础(第二版)——多普勒频移(4)
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第三篇谈谈装备
- Sqoop MySQL hive 数据库导入导出数据
- mysql客户端heidisql导入导出数据库
- [附源码]计算机毕业设计JAVA宠物之家管理系统
- 用于降低EMI的时钟展频技术
- Django高级特性之django-apscheduler定时任务,给Django添加run,右键运行
- 年轻人的第一支基金,能买吗?