第三节 数学预备知识

集合(Set)

由一些确定的、彼此不同的成员(Member)或者元素(Element)构成的一个整体。成员取自一个更大的范围,称为基类型(Base Type)。集合中成员的个数称为集合的基数(Cardinality)。

例如,集合 R 由整数 3、 4、 5 组成,写成 R={3, 4, 5}。

此时R的成员是 3、4、 5, R 的基类型是整型,R的基数是3。

依赖于集合的基类型,它的成员经常有一个线性顺序。

集合的成员叫做该集合的子集(Subset),子集中的每个成员都属于该集合。

没有元素的集合称为空集(Empty Set,又称为 Null Set), 记作Φ。

如上例中, 3 是R 的成员,记为: 3∈R, 6不是R的成员,记为: 6∉R。 {3, 4}是 R 的子集。

集合的表示法

1) 穷举法: S={2, 4, 6, 8, 10};

2) 描述法: S={x|x 是偶数,且 0≤x≤10}。

3、 集合的特性

1) 确定性:任何一个对象都能被确切地判断是集合中的元素或不是;

2) 互异性:集合中的元素不能重复;

3) 无序性:集合中元素与顺序无关。

计量单位(Unit): 按照IEEE规定的表示法标准,字节缩写为“ B”,位缩写为“ b”,兆字节(220字节)缩写为缩写为“ MB”,千字节(210字节)缩写为“ KB”。

阶乘函数Factorial Function

阶乘函数 n!是指从 1 到 n 之间所有整数的连乘,其中 n 为大于 0 的整数。因此, 5!=1*2*3*4*5=120。特别地, 0!=1

取下整和取上整(Floor and Ceiling):

实数 x 的取下整函数(Floor)记为⌊x⌋,返回不超过 x 的最大整数。例如, ⌊3.4⌋=3,与⌊3.0⌋的结果相同。

实数 x 的取上整函数(Ceiling)记为⌈x⌉,返回不小于 x 的最小整数。例如, ⌈3.4⌉=4,与⌈4.0⌉的结果相同。

取模操作符( Modulus):

取模函数返回整除后的余数,有时称为求余。在 C#语言中取模操作符的表示为 n%m。从余数的定义可知, n%m 得到一个整数,满足 n=qm+r,其中 q 为一个整数,且 0≤r<m。

对数:

如果a(a>0,a≠1)的b次幂等于N,就是ab=N,那么数b叫做以a为底N的对数(Logarithm),记作logaN=b,其中a叫做对数的底数,N叫做真数。

从定义可知,负数和零没有对数。事实上,因为 a>0,所以不论 b 是什么实数,都有 ab>0,这就是说不论 b 是什么数,N 永远是正数,因此负数和零没有对数。

在一个线性表中查找指定值所使用的折半查找算法:首先与中间元素进行比较,以确定下一步是在上半部分进行查找还是在下半部分进行查找。然后继续将适当的子表分半,直到找到指定的值。一个长度为n的线性表被促逐次分半,直到最后的子表中只有一个元素,一共需要进行多少次呢?答案是log2n次。

本书中用到的对数几乎都以 2 为底,这是因为数据结构和算法总是把事情一分为二,或者用二进制位来存储编码。

递归

一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归的(Recursive)。根据调用方式的不同,它分为直接递归(Direct Recursion)和间接递归(Indirect Recursion)。

有很多数学函数是以递归来定义的。

如大家熟悉的阶乘函数,我们可以对n!作如下定义:

阶乘函数的C#语言实现如下。

public static long fact(int n)

{

if(n <= 1)

return 1;

else

return n * fact(n-1);

}

递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时空开销。所以,递归比其他替代选择诸如while 循环等,所花费的代价更大。

时间: 2024-10-24 23:21:08

第三节 数学预备知识的相关文章

word2vec 中的数学原理详解(二)预备知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

《软件可靠性方法》笔记(一)---第二章 预备知识

时间:2016.11.12: 地点:南京江宁实验室: 状态:迷茫的研一: 为什么会读到这本书?导师推荐的.可以说第一开始听到这本书名时完全是一脸蒙蔽,就像选本科毕设题目时是一样的...就是在上半年当老师告诉我他是做形式化的,我一度以为我特么的难道联系到自动化学院了?我可是一门心思向计算机的.后来直到暑假在家闲的发慌翻翻本科时候的软件课本书时,居然看到了一章讲形式化的...蜜汁尴尬,毕竟当年这门课最后我得了优.咳咳,扯远了.这本书还是蛮适合刚接触形式化的人看的,但是得有一定的数学功底(所以说我一开

(连载)边喝咖啡边学Unity——第二章 预备知识体系

第二章 预备知识体系 --本章涉及空间数学.解析几何.线性代数.计算机图形学.算法.数据结构等众多基础学科.同上一章相比,虽然枯燥,但是绝不能称为废话之章,即使粗略的看一遍,也比直接跳过来的好,详细地读完,会让读者以后的开发之路走的更加平坦. 并且本章的知识不仅仅对您的Unity游戏开发有帮助,对于大部分软件开发人员都是大有作用的. 作为传统3D游戏编程来讲,需要运用到的知识面非常之广,涉及到的学科特别之多.而通常讲编程的书籍,会弱化数学知识,讲数学的书籍,会弱化编程方面的知识.这就是我在第一章

C++预备知识

目录 预备知识 1. 前言 1.1 简介 1.2 原因 2. 计算机结构 3. 计算机工作过程 4. 计算机系统的多级层次 预备知识 1. 前言 1.1 简介 这是我讲解\(c++\)的第一部分,首先介绍了现代计算机的组成结构,主要由五部分组成,有输入设备.输出设备.存储器.运算器以及控制器,它们共同协作完成了计算机的各种功能:其次介绍了计算机在执行机器指令的过程,主要分为两个步骤,有存储程序和数据和运行程序.最后介绍了计算机系统的多级层次,主要有五层结构,自底向上分别为微指令系统.使用机器语言

[转]预备知识—程序的内存分配

因为经典,所以转发. 一.预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)  —   由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆区(heap)   —   一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回    收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static) —,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,

HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】

难度上,,,确实,,,不算难 问题是有个矩阵运算的优化 题目是说给个N*K的矩阵A给个K*N的矩阵B(1<=N<=1000 && 1=<K<=6),先把他们乘起来乘为C矩阵,然后算C^(N*N) 相当于 ABABABABABABAB...=(AB)^(N*N) 不如 A(BA)^(N*N-1)B 因为BA乘得K*K的矩阵,K是比较小的 #include <cstdio> #include <cstdlib> #include <cstr

《软件调试的艺术》笔记--预备知识

1.gcc的-g选项 如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码信息编译到可执行文件中. 如果不使用-g选项: #include <stdio.h> int main(void) { int i = 1; i = i + 1; printf("i = %d\n",i); return 0; } gcc main.c gdb a.out (gdb) b main Breakpoint 1 at 0x4004f8 (gdb) r

最大熵学习笔记(一)预备知识

  生活中我们经常听到人们说"不要把鸡蛋放到一个篮子里",这样可以降低风险.深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle).本文为一则读书笔记,将对最大熵原理以及由此导出的最大熵模型进行介绍,重点给出其中所涉及数学公式的理解和详细推导. 相关链接 最大熵学习笔记(零)目录和引言 最大熵学习笔记(一)预备知识 最大熵学习笔记(二)最大熵原理 最大熵学习笔记(三)最大熵模型 最大熵学习笔记(四)模型求解 最大熵学习笔

【转】关于LIS和一类可以用树状数组优化的DP 预备知识

原文链接 http://www.cnblogs.com/liu-runda/p/6193690.html 预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以是二维/三维的,某一维的含义也不仅仅是指某个数列的第几项. 树状数组(BIT or fenwick tree):一种高效地动态维护一个序列并动态求取前缀和的数据结构.修改某个元素/求一次前缀和的