这是大数据算法的课程笔记,这节讲的是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相关推荐

  1. 数据结构大作业_大数据课程笔记

    前言: 到目前为止有了一个月的时间,学习了python基础及算法.常用计算库numpy和pandas数据的导入和各种处理.matplotlib和seaborn做数据可视化 以及上周的大数据框架hado ...

  2. 2021-03-08~09~10~11~12 大数据课程笔记 day47day48day49day50day51

    @R星校长 大数据技术之Flink 第一章 初识Flink   在当前数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题 ...

  3. 2021-02-26~27~28 大数据课程笔记 day37day38day39

    @R星校长 音乐数据中心平台 1.1 数据库与ER建模 1.1.1 数据库(DataBase)   数据库是按照数据结构来组织.存储和管理数据的仓库,是一个长期存储在计算机内的.有组织的.可共享的.统 ...

  4. 2021-03-17~18 大数据课程笔记 day56day57

    @R星校长 1 基础概念和Kylin简介 1.1 OLTP与OLAP   数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理 ...

  5. 2021-02-12 大数据课程笔记 day23

    @R星校长 redis 概述 为什么使用 redis? 什么是 Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)内存数据库. 它提供六种数据类型来存储值:str ...

  6. 2021-03-13 大数据课程笔记 day52

    @R星校长 基于Flink的城市交通监控平台 1.1 项目整体介绍   近几年来,随着国内经济的快速发展,高速公路建设步伐不断加快,全国机动车辆.驾驶员数量迅速增长,交通管理工作日益繁重,压力与日俱增 ...

  7. 2021-01-30 大数据课程笔记 day10

    @R星校长 课程重点 HDFS 完全分布式搭建(熟练) Hadoop 3.x 新特性(了解) Hadoop Federation(了解) Hadoop HA(掌握) Hadoop HA 集群搭建(熟练 ...

  8. 2021-01-27 大数据课程笔记 day7

    @R星校长 Nginx 问题引入 单个 tomcat 支持最高并发 怎么解决高并发问题,解决单个服务器过载问题? Nginx概述 Nginx 介绍 1. Nginx ("engine x&q ...

  9. 2021-03-19~20 大数据课程笔记 day58day59

    @R星校长 1 Scala 1.1 [重点]Scala六大特性  1) 与java无缝整合  2) 类型自动推断  3) 并发和分布式  4) Trait特质特性  5) Match模式匹配  6) ...

最新文章

  1. HTML中三维特性,前端进阶系列(三):HTML5新特性
  2. 基于脑电和特征加权阶段训练的驾驶员疲劳状态估计
  3. iOS:MBProgressHUD的基本使用
  4. sqlite数据库的多线程访问问题
  5. Linux shell条件判断if中的-a到-z的意思
  6. python写错了怎么更改-Python中修改字符串的四种方法
  7. linux关闭xdmcp服务,使用Xmanager远程CentOS 7服务器(XDMCP)
  8. 品茗论道说广播(Broadcast内部机制讲解)
  9. JZOJ 3807. 【NOIP2014模拟8.25】地砖铺设
  10. Android下载文件
  11. 前端学习(1768):前端调试值之内存监控的原理和方法三
  12. Nodejs线上日志部署
  13. Beta函数与Gamma函数及其与Beta分布的关系
  14. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
  15. 宁波大学计算机专硕分数线,2019宁波大学研究生分数线汇总(含2016-2019历年复试)...
  16. Android - 控件android:ems属性
  17. 功能对等四个原则_“奈达功能对等理论”四个方面的原始出处及定义是什么?...
  18. 大文件数据恢复-轻松恢复大于4GB的文件
  19. Rust 错误处理 简记
  20. Web思维导图实现的技术点分析

热门文章

  1. 语义分割数据集转物体检测
  2. 多普勒频移及其解决方案
  3. 【读书2】【2014】基于MATLAB的雷达信号处理基础(第二版)——多普勒频移(4)
  4. 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第三篇谈谈装备
  5. Sqoop MySQL hive 数据库导入导出数据
  6. mysql客户端heidisql导入导出数据库
  7. [附源码]计算机毕业设计JAVA宠物之家管理系统
  8. 用于降低EMI的时钟展频技术
  9. Django高级特性之django-apscheduler定时任务,给Django添加run,右键运行
  10. 年轻人的第一支基金,能买吗?