题目0:
已知函数T(n)
的递推关系式为:
证明该函数的时间复杂度为。
证明
所以,函数的时间复杂度为。
题目一:
证明在一个有个顶点的无向完全图中,边的数量为。
证明:
对于一个有个顶点的无向完全图,每个顶点都与其他个顶点相连。
所以每个顶点有条边与之关联。
但每条边被两个顶点共享,所以总的边数为。
题目二:
证明在一个有个顶点的二叉树中,若叶子节点数为,度为的节点数为,则。
证明:
设度为的节点数为。
因为二叉树中边的数量等于节点数减一,即,同时边的数量也等于度为的节点数乘以加上度为的节点数乘以,即。
而总的节点数,将其代入可得,化简后得到。
题目三:
证明一个有向图是强连通的当且仅当对于任意两个不同的顶点和,都存在从到的路径和从到的路径。
证明:
必要性:
若有向图是强连通的,那么对于任意两个不同的顶点和,必然存在从到的路径,因为强连通意味着任意两个顶点之间都有路径可达。同理,也存在从到的路径。
充分性:
若对于任意两个不同的顶点和,都存在从到的路径和从到的路径,那么对于任意一对顶点都能互相到达,这就满足强连通的定义。
题目四:
证明在一个有个顶点的无向树中,添加一条边会形成一个唯一的圈。
证明:
由于树是无环的连通图,当添加一条边时,必然会连接两个原本不直接相连的顶点。
这样就会形成一个路径,而这个路径加上新添加的边就构成了一个圈。
因为树的性质决定了任意两个顶点之间只有一条路径,所以添加一条边后形成的圈是唯一的。
题目五:
证明在一个有个顶点的无向连通图中,如果边的数量等于,那么这个图是一棵树。
证明:
首先,已知图是无向连通图。
若边的数量等于,根据树的定义,有个顶点的树恰好有条边。
假设这个图不是树,那么它必然存在环或者不连通。但如果有环,那么边的数量会大于;如果不连通,那么边的数量也会小于。这与已知条件矛盾,所以这个图是一棵树。
题目六:
证明在一个有向无环图(DAG)中,存在一个拓扑排序。
证明:
因为有向无环图中不存在环,所以必然存在一些入度为的顶点。
选择一个入度为的顶点,将其加入拓扑排序序列中,并从图中删除该顶点及其发出的边。
重复这个过程,每次都选择一个入度为的顶点加入序列,直到所有顶点都被加入序列。
由于图是有向无环图,所以这个过程一定可以完成,从而存在一个拓扑排序。
题目七:
证明在一个二叉搜索树中,中序遍历得到的序列是一个有序序列。
证明:
二叉搜索树的定义是对于任意一个节点,其左子树中的所有节点的值都小于该节点的值,其右子树中的所有节点的值都大于该节点的值。
中序遍历的顺序是先遍历左子树,然后访问根节点,最后遍历右子树。
由于左子树中的值都小于根节点的值,右子树中的值都大于根节点的值,并且左子树和右子树也都是二叉搜索树,所以中序遍历得到的序列是一个有序序列。
题目八:
证明在一个有个顶点的无向图中,如果每个顶点的度数都至少为,那么这个图是连通的。
证明:
假设这个图不连通,那么它可以分为多个连通分量。
考虑其中一个连通分量,设其顶点数为,那么这个连通分量中每个顶点的度数最多为。
因为整个图有个顶点,所以。
但题目中每个顶点的度数都至少为,这与假设矛盾,所以这个图是连通的。
题目九:
证明在一个满二叉树中,叶子节点的数量为,其中为总节点数。
证明:
设满二叉树的高度为,根据满二叉树的性质,总节点数。
满二叉树的叶子节点数量为。
由可得,即叶子节点的数量为。
题目十:
证明在一个有向图中,如果存在一个顶点,对于任意其他顶点,都存在从到的路径,那么这个有向图存在一个有向生成树。
证明:
从顶点出发,对于任意一个顶点,如果存在从到的路径,那么在这些路径中选择一条最短的路径。
这些最短路径构成的子图就是一个有向生成树。
因为对于任意顶点,都有从到的路径,所以这个子图包含了所有的顶点,并且是一个有向树,即有向生成树。