多叉图(高级数据结构)
来源:互联网 发布:北京金税三期软件下载 编辑:程序博客网 时间:2024/06/07 04:48
多叉图(More-Graph),一种C++14规范中引入的高级数据结构。其为二叉图(Binary-Graph)的延伸,在世界算法数据结构大会上由杰诺·恩特在二叉图之后首先提出。 多叉图在形式上类似于二叉图,其实现类似于图论。
多叉图即为二叉图的延伸,采用多次方的数据结构,类似于编程学中的(Recursion)递归、(Iteration)迭代,但究竟是递归还是迭代,世界算法数据结构大会的一些人依然有一些争议。目前主流的两个观点如下,斯茂·斯迪尤德恩特认为,作为递归算法是一种不断反馈,将问题简单化,从繁到简,而迭代是将一个变两个,两个变四个,复杂化了,所以递归才是符合多叉图的变化形式。而杰诺·恩特认为,无论是将问题简单化,还是复杂化,形式上依然是“多叉”的样子,就像把一张图,倒过来看,它本质上依然是这张图片,所以其实无论是(Recursion)递归还(Iteration)迭代,都应该算是多次方的数据结构中的多叉图。
一、定义
多叉图(More-Graph),一种C++14规范中引入的高级数据结构。其为二叉图(Binary-Graph)的延伸,在世界算法数据结构大会上由斯茂·斯迪尤德恩特首先提出。
多叉图在形式上类似于二叉图,其实现类似于图论(在下面的代码中有介绍)。由N的X次方个点,E的X次方条边构成(设X为N与E之积的最大极限数),当X等于N与E之积,即N与E之积等于N与E之积的最大极限数的时候,图像的长宽之比无限逼近黄金分割比,同样可复杂度退化为二叉图。其主要特征是多叉图的深度为depth以下的点中可以以图的方式跨级连接,并忽略其中边的最高权,直接理解为两点重合,从而达到以多叉形式实现连通环的目的。
二、PHP实现
<?php
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
// used to display a nice indented tree
function display_children($parent, $level)
{
// 获得一个 父节点 $parent 的所有子节点
$result = mysql_query('SELECT name FROM tree '.
'WHERE parent="'.$parent.'";');
// 显示每个子节点
while ($row = mysql_fetch_array($result))
{
// 缩进显示节点名称
echo str_repeat(' ',$level).$row['name']."n";
//再次调用这个函数显示子节点的子节点
display_children($row['name'], $level+1);
}
}
?>;
<?php
// $node 是那个最深的节点
function get_path($node)
{
// 查询这个节点的父节点
$result = mysql_query('SELECT parent FROM tree '.
'WHERE name="'.$node.'";');
$row = mysql_fetch_array($result);
// 用一个数组保存路径
$path = array();
// 如果不是根节点则继续向上查询
// (根节点没有父节点)
if ($row['parent']!='')
{
// the last part of the path to $node, is the name
// of the parent of $node
$path[] = $row['parent'];
// we should add the path to the parent of this node
// to the path
$path = array_merge(get_path($row['parent']), $path);
}
// return the path
return $path;
}
?>;
如果对"Cherry"使用这个函数:print_r(get_path('Cherry')),就会得到这样的一个数组了:
Array
(
[0] =>; Food
[1] =>; Fruit
[2] =>; Red
)
三、多叉图的应用
这里需要先引进一个概念,多叉图的重心。
该重心的概念是和二叉图同时在大会上提出的,重心的概念类似于信息学中的数据结构的二叉图中树的重心。
其主要意义出自于其几何概念,实现由C++的标准库进行。
多叉图的重心通过二叉图的最高深度优先搜索来遍历,再遍历一遍最低深度,从而实现了该多叉图边权的中心搜索,在数据流和多叉图对称完备匹配中有广泛的应用。
多叉图即为二叉图的延伸,采用多次方的数据结构,类似于编程学中的(Recursion)递归、(Iteration)迭代,但究竟是递归还是迭代,世界算法数据结构大会的一些人依然有一些争议。目前主流的两个观点如下,斯茂·斯迪尤德恩特认为,作为递归算法是一种不断反馈,将问题简单化,从繁到简,而迭代是将一个变两个,两个变四个,复杂化了,所以递归才是符合多叉图的变化形式。而杰诺·恩特认为,无论是将问题简单化,还是复杂化,形式上依然是“多叉”的样子,就像把一张图,倒过来看,它本质上依然是这张图片,所以其实无论是(Recursion)递归还(Iteration)迭代,都应该算是多次方的数据结构中的多叉图。
一、定义
多叉图(More-Graph),一种C++14规范中引入的高级数据结构。其为二叉图(Binary-Graph)的延伸,在世界算法数据结构大会上由斯茂·斯迪尤德恩特首先提出。
多叉图在形式上类似于二叉图,其实现类似于图论(在下面的代码中有介绍)。由N的X次方个点,E的X次方条边构成(设X为N与E之积的最大极限数),当X等于N与E之积,即N与E之积等于N与E之积的最大极限数的时候,图像的长宽之比无限逼近黄金分割比,同样可复杂度退化为二叉图。其主要特征是多叉图的深度为depth以下的点中可以以图的方式跨级连接,并忽略其中边的最高权,直接理解为两点重合,从而达到以多叉形式实现连通环的目的。
二、PHP实现
<?php
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
// used to display a nice indented tree
function display_children($parent, $level)
{
// 获得一个 父节点 $parent 的所有子节点
$result = mysql_query('SELECT name FROM tree '.
'WHERE parent="'.$parent.'";');
// 显示每个子节点
while ($row = mysql_fetch_array($result))
{
// 缩进显示节点名称
echo str_repeat(' ',$level).$row['name']."n";
//再次调用这个函数显示子节点的子节点
display_children($row['name'], $level+1);
}
}
?>;
<?php
// $node 是那个最深的节点
function get_path($node)
{
// 查询这个节点的父节点
$result = mysql_query('SELECT parent FROM tree '.
'WHERE name="'.$node.'";');
$row = mysql_fetch_array($result);
// 用一个数组保存路径
$path = array();
// 如果不是根节点则继续向上查询
// (根节点没有父节点)
if ($row['parent']!='')
{
// the last part of the path to $node, is the name
// of the parent of $node
$path[] = $row['parent'];
// we should add the path to the parent of this node
// to the path
$path = array_merge(get_path($row['parent']), $path);
}
// return the path
return $path;
}
?>;
如果对"Cherry"使用这个函数:print_r(get_path('Cherry')),就会得到这样的一个数组了:
Array
(
[0] =>; Food
[1] =>; Fruit
[2] =>; Red
)
三、多叉图的应用
这里需要先引进一个概念,多叉图的重心。
该重心的概念是和二叉图同时在大会上提出的,重心的概念类似于信息学中的数据结构的二叉图中树的重心。
其主要意义出自于其几何概念,实现由C++的标准库进行。
多叉图的重心通过二叉图的最高深度优先搜索来遍历,再遍历一遍最低深度,从而实现了该多叉图边权的中心搜索,在数据流和多叉图对称完备匹配中有广泛的应用。
阅读全文
0 0
- 多叉图(高级数据结构)
- (五)高级数据结构
- 二叉图(高级数据结构)
- 高级数据结构
- 高级数据结构
- C#高级(九)C#数据结构 , 集合
- 数据结构之二(续,高级hash)
- 高级数据结构 - 线段树(1)
- 高级数据结构 - 线段树(2)
- C语言高级篇(数据结构) --- 链表
- Python中的高级数据结构
- 高级数据结构-SkipList
- Python中的高级数据结构
- Python中的高级数据结构
- python高级数据结构
- Python笔记:高级数据结构
- Python中的高级数据结构
- 高级编程之数据结构
- hdu3652 B-number(数位DP)
- STM32_GPIO配置及库函数讲解—独立按键(受启发,前进一点点)
- 点击保存按钮后,数据无法逆传到cell显示,代理协议不调用
- UDP
- 【读书笔记】TCP/IP网络编程 端口号问题
- 多叉图(高级数据结构)
- 更改项目图标
- Hdu6092 Rikka with Subset(2017多校第5场)
- 面试题:找出公司员工最喜欢的k种水果
- 记录一,技术&现在的想法
- requests学习
- 算法十三
- 《机器学习》读书笔记 4 第2章 模型评估与选择 二
- tomcat7最大并发数,等待连接数,最大连接数配置