图论基础
图论知识点

图论知识点摘要:图论是数学的一个分支,它研究图的性质和应用。
图由节点(或顶点)和连接这些节点的边组成。
本文将概述图论的基本概念、类型、算法以及在各种领域的应用。
1. 基本概念1.1 节点和边图由一组节点(V)和一组边(E)组成,每条边连接两个节点。
边可以是有向的(指向一个方向)或无向的(双向连接)。
1.2 路径和环路径是节点的序列,其中每对连续节点由边连接。
环是一条起点和终点相同的路径。
1.3 度数节点的度数是与该节点相连的边的数量。
对于有向图,分为入度和出度。
1.4 子图子图是原图的一部分,包含原图的一些节点和连接这些节点的边。
2. 图的类型2.1 无向图和有向图无向图的边没有方向,有向图的每条边都有一个方向。
2.2 简单图和多重图简单图是没有多重边或自环的图。
多重图中,可以有多条边连接同一对节点。
2.3 连通图和非连通图在无向图中,如果从任意节点都可以到达其他所有节点,则称该图为连通的。
有向图的连通性称为强连通性。
2.4 树树是一种特殊的连通图,其中任意两个节点之间有且仅有一条路径。
3. 图的算法3.1 最短路径算法如Dijkstra算法和Bellman-Ford算法,用于在加权图中找到从单个源点到所有其他节点的最短路径。
3.2 最大流最小割定理Ford-Fulkerson算法用于解决网络流中的最大流问题。
3.3 匹配问题如匈牙利算法,用于解决二分图中的匹配问题。
4. 应用4.1 网络科学图论在网络科学中有广泛应用,如社交网络分析、互联网结构研究等。
4.2 运筹学在运筹学中,图论用于解决物流、交通网络优化等问题。
4.3 生物信息学在生物信息学中,图论用于分析蛋白质相互作用网络、基因调控网络等。
5. 结论图论是数学中一个非常重要和广泛应用的领域。
它不仅在理论上有着深刻的内涵,而且在实际应用中也发挥着关键作用。
随着科技的发展,图论在新的领域中的应用将会不断涌现。
本文提供了图论的基础知识点,包括概念、图的类型、算法和应用。
图论基础知识

end;
end;
end;
End; 15
End; End;
以上dfs(i)的时间复杂度为O(n*n)。 对于一个非连通图,调用一次dfs(i),即按深度优先顺序依次访问了顶点i所在的(强)连通分支,所以 只要在主程序中加上:for i:=1 to n do {深度优先搜索每一个未被访问过的顶点}
if not Visited(I) then dfs(i);
Begin
访问顶点i;Visited[i]:=true;顶点i入队q;
while 队列q非空 do
begin
从队列q中取出队首元素v;
for j:=1 to n do
begin
if (not Visited[j]) and (a[v,j]=1) then
begin
时间:O(n*n)
访问顶点j;Visited[j]:=true;顶点j入队q
强连通分支:一个有向图的强连通分支定义为该图的最大的强连通子图, 右图含有两个强连通分支,一个是1和2构成的一个子图,一个是3独立构 成的一个子图。
7
图论算法与实现
一、图论基础知识
3、图的存储结构(n阶e条边):
8
图论算法与实现
一、图论基础知识
4、图的遍历: 从图中某一顶点出发系统地访问图中所有顶点,使每个顶点恰好
11
图论算法与实现
一、图论基础知识
4、图的遍历: 图的宽(广)度优先遍历:类似于树的按层次遍历。从图中某个顶点V0出 发,访问此顶点,然后依次访问与V0邻接的、未被访问过的所有顶点,然 后再分别从这些顶点出发进行广度优先遍历,直到图中所有被访问过的顶 点的相邻顶点都被访问到。若此时图中还有顶点尚未被访问,则另选图中 一个未被访问过的顶点作为起点,重复上述过程,直到图中所有顶点都被 访问到为止。
图论基础知识的名词解释

图论基础知识的名词解释图论是数学的一个分支,研究图的属性和关系。
图是由节点和节点之间的边组成的抽象模型,被广泛应用于计算机科学、网络分析、医学和社会科学等领域。
下面,我们将解释一些图论中常用的基础概念和术语。
1. 图 (Graph)图是图论研究的基本对象,由一组节点和连接这些节点的边组成。
节点也被称为顶点 (Vertex),边则是节点之间的连接线。
图可以分为有向图 (Directed Graph) 和无向图 (Undirected Graph) 两种类型。
在有向图中,边有方向,从一个节点指向另一个节点;而在无向图中,边没有方向,节点之间的关系是双向的。
2. 顶点度数 (Degree of a Vertex)顶点度数指的是一个顶点与其他顶点相邻的边的数量。
在无向图中,顶点度数即与该顶点相连的边的数量;在有向图中,则分为入度 (In-degree) 和出度 (Out-degree)。
入度表示指向该节点的边的数量,而出度表示从该节点出发的边的数量。
3. 路径 (Path)路径指的是通过边连接的一系列节点,形成的顺序序列。
路径的长度是指路径上边的数量。
最短路径 (Shortest Path) 是指连接两个节点的最短长度的路径。
最短路径算法被广泛应用于计算机网络中的路由选择和地图导航系统中的路径规划。
4. 连通图 (Connected Graph)连通图是指图中的任意两个节点之间都存在路径的图。
如果一个图不是连通图,那么它可以被分割为多个连通分量 (Connected Component)。
连通图在社交网络分析和传感器网络等领域中具有重要的应用。
5. 完全图 (Complete Graph)完全图是指任意两个节点之间都存在边的图。
在完全图中,每对节点之间都有一条边相连。
n个节点的完全图有n(n-1)/2条边。
完全图经常用于描述需要互相交流的问题,如计算机网络中的通信。
6. 树 (Tree)树是一种无环连通图,其中任意两个节点之间有且仅有一条路径相连。
图论的基础概念和算法

图论的基础概念和算法图论是数学的一个分支,研究的对象是图。
图是由一组互不相连的节点(顶点)和连接这些节点的边(边)组成的数学结构。
图论的基础概念包括顶点、边、路径、环、度数等。
本文将介绍图论的基础概念以及常用的图算法。
一、基础概念1. 图的定义和表示图由顶点集合和边集合组成。
顶点集合用V表示,边集合用E表示。
图可以用邻接矩阵或邻接表来表示。
邻接矩阵是一个二维数组,用来表示图中顶点之间的连接关系。
邻接表是一个链表数组,用来表示每个顶点相邻顶点的列表。
2. 顶点和边顶点是图的基本组成单位,用来表示图中的一个节点。
边是连接两个顶点的线段,用来表示两个顶点之间的关系。
3. 路径和环路径是由一系列相邻顶点连接而成的顶点序列。
路径的长度是指路径上经过的边的数目。
环是起点和终点相同的路径。
4. 度数顶点的度数是指与其相邻的边的数目。
入度是指指向该顶点的边的数目,出度是指由该顶点指向其他顶点的边的数目。
图中顶点的度数可以用来判断顶点的重要性。
二、常用算法1. 广度优先搜索(BFS)广度优先搜索是一种用来遍历和搜索图的算法。
从一个起始顶点开始,逐层扩展,先访问距离起始顶点最近的顶点,然后访问它们的相邻顶点,并逐渐向外扩展。
广度优先搜索可以用来计算两个顶点之间的最短路径。
2. 深度优先搜索(DFS)深度优先搜索是另一种常用的图遍历算法。
从一个起始顶点开始,沿着一条路径尽可能深入地访问图,直到不能再继续深入为止,然后回溯到上一个顶点,继续探索其他路径。
深度优先搜索可以用来计算连通分量、拓扑排序和寻找环等。
3. 最小生成树最小生成树是指图中通过连接所有顶点的子图,并且该子图的边权重之和最小。
常用的最小生成树算法包括Prim算法和Kruskal算法。
Prim算法从一个顶点开始,逐步扩展最小生成树的边,直到包含所有顶点为止。
Kruskal算法则是从边的权重最小的边开始,逐步增加边到最小生成树中,直到包含所有顶点为止。
4. 最短路径算法最短路径算法用来计算两个顶点之间的最短路径。
离散数学-图论基础

结点的次数
2020/1/17
问题1:是否存在这种情况:25个人中,由于意见不同,每 个人恰好与其他5个人意见一致?
在建立一个图模型时,一个基本问题是决定这个图是什么 —— 什么是结点?什么是边? 在这个问题里,我们用结点表示对象——人; 边通常表示两个结点间的关系——表示2个人意见一致。 也就是说,意见一致的2个人(结点)间存在一条边。
第七章 图论基础
Graphs
第一节 图的基本概念
2020/1/17
一个图G定义为一个三元组:G=<V, E, Φ>
V —— 非空有限集合,V中的元素称为结点 (node)或 顶点(vertex)
E —— 有限集合(可以为空),E中的元素称为边(edge)
Φ —— 从E到V的有序对或无序对的关联映射
以v为起始结点的弧的条数,称为出度(out-degree) (引出次数),记为d+(v)
以v为终结点的弧的条数,称为入度(in-degree)
(引入次数),记为d-(v)
v3
v的出度和入度的和,称为v的度数(degree)
(次数),记为d(v) = d+(v) + d-(v)
v1 (a) v2
结点的次数
(associative mapping)
v3
v3
v3
v1 (a) v2
v1
v2
(b)
v1
v2
(c)
图的基本概念
2020/1/17
图G=<V, E, Φ>中的每条边都与图中的无序对或有序对联系
若边e E 与无序对结点[va, vb]相联系,即Φ(e)= [va, vb] (va, vb V)则称e是无向边(或边、棱)
图论基础图的表示与常见算法

图论基础图的表示与常见算法图论是数学的一个分支,研究的是图这种数学结构。
图由节点(顶点)和边组成,是研究网络、关系、连接等问题的重要工具。
在图论中,图的表示和算法是非常重要的内容,本文将介绍图的表示方法以及一些常见的图算法。
一、图的表示1. 邻接矩阵表示法邻接矩阵是表示图的一种常见方法,适用于稠密图。
对于一个有n 个节点的图,邻接矩阵是一个n×n的矩阵,其中第i行第j列的元素表示节点i到节点j是否有边相连。
如果有边相连,则该元素的值为1或边的权重;如果没有边相连,则该元素的值为0或者无穷大。
邻接矩阵的优点是可以方便地进行边的查找和修改,但缺点是对于稀疏图来说,会浪费大量的空间。
2. 邻接表表示法邻接表是表示图的另一种常见方法,适用于稀疏图。
对于一个有n 个节点的图,邻接表是一个长度为n的数组,数组中的每个元素是一个链表,链表中存储了与该节点相连的其他节点。
邻接表的优点是节省空间,适用于稀疏图,但缺点是查找边的时间复杂度较高。
3. 关联矩阵表示法关联矩阵是表示图的另一种方法,适用于有向图。
对于一个有n个节点和m条边的图,关联矩阵是一个n×m的矩阵,其中第i行第j列的元素表示节点i和边j的关系。
如果节点i是边j的起点,则该元素的值为-1;如果节点i是边j的终点,则该元素的值为1;如果节点i与边j无关,则该元素的值为0。
关联矩阵适用于有向图,可以方便地表示节点和边之间的关系。
二、常见图算法1. 深度优先搜索(Depth First Search,DFS)深度优先搜索是一种用于遍历或搜索图的算法。
从起始节点开始,沿着一条路径一直向下搜索,直到到达叶子节点,然后回溯到上一个节点,继续搜索其他路径。
DFS可以用递归或栈来实现。
2. 广度优先搜索(Breadth First Search,BFS)广度优先搜索是另一种用于遍历或搜索图的算法。
从起始节点开始,先访问起始节点的所有邻居节点,然后再依次访问邻居节点的邻居节点,以此类推。
图论基础知识

图论算法与实现
一、图论基础知识
4、图的遍历: 对下面两个图分别进行深度优先遍历,写出遍历结果。 注意:分别从a和V1出发。
左图从顶点a出发,进行深度优先遍历的结果为:a,b,c,d,e,g,f 右图从V1出发进行深度优先遍历的结果为:V1,V2,V4,V8,V5,V3,V6,V7
邻接矩阵
边集数组
邻接表
优点O(1)
存储稀疏图时,空 间效率比较好,也 比较直观
便于查找任一顶点的关联边及 关联点,查找运算的时间复杂 性平均为O(e/n)
存储稀疏图,会造 成很大的空间浪费
不适合对顶点的运 算和对任意一条边 的运算
要查找一个顶点的前驱顶点和以此顶点 为终点的边、以及该顶点的入度就不方 便了,需要扫描整个表,时间复杂度为O (n+e)。可以用十字邻接表改进
被访问一次,这种运算操作被称为图的遍历。为了避免重复访问某个 顶点,可以设一个标志数组visited[i],未访问时值为false,访问一次 后就改为true。
图的遍历分为深度优先遍历和广度(宽度)优先遍历两种方法。 图的深度优先遍历:类似于树的先序遍历。从图中某个顶点Vi出发, 访问此顶点并作已访问标记,然后从Vi的一个未被访问过的邻接点Vj出 发再进行深度优先遍历,当Vi的所有邻接点都被访问过时,则退回到上 一个顶点Vk,再从Vk的另一个未被访问过的邻接点出发进行深度优先遍 历,直至图中所有顶点都被访问到为止。
常州市第一中学 林厚从
图论算法与实现
一、图论基础知识
4、图的遍历: 对于一个连通图,深度优先遍历的递归过程如下:
Procedure dfs(i:integer); {图用邻接矩阵存储} Begin
访问顶点i; Visited[i]:=True; For j:=1 to n do {按深度优先搜索的顺序遍历与i相关联的所有顶点}
图论基础知识汇总

图论基础知识汇总(总32页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除图与网络模型及方法§1 概论图论起源于18世纪。
第一篇图论论文是瑞士数学家欧拉于1736 年发表的“哥尼斯堡的七座桥”。
1847年,克希霍夫为了给出电网络方程而引进了“树”的概念。
1857年,凯莱在计数烷22 n n H C 的同分异构物时,也发现了“树”。
哈密尔顿于1859年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈,近几十年来,由于计算机技术和科学的飞速发展,大大地促进了图论研究和应用,图论的理论和方法已经渗透到物理、化学、通讯科学、建筑学、生物遗传学、心理学、经济学、社会学等学科中。
图论中所谓的“图”是指某类具体事物和这些事物之间的联系。
如果我们用点表示这些具体事物,用连接两点的线段(直的或曲的)表示两个事物的特定的联系,就得到了描述这个“图”的几何形象。
图论为任何一个包含了一种二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。
哥尼斯堡七桥问题就是一个典型的例子。
在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。
当 然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。
欧拉为了解决这个问题,采用了建立数学模型的方法。
他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”,七条“线”的“图”。
问题成为从任一点出发一笔画出七条线再回到起点。
欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则:这个图是连通的,且每个点都与偶数线相关联,将这个判定法则应用于七桥问题,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。
图与网络是运筹学(Operations Research )中的一个经典和重要的分支,所研究的问题涉及经济管理、工业工程、交通运输、计算机科学与信息技术、通讯与网络技术等诸多领域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A
C D
B
赋权图 赋权图G是一个三元组(V,E,g),其中V是顶点集, E是边集,f是定义在V上的函数,g是定义在E上的函数, f(vi)和g(ej)分别称为顶点vi和边ej上的权。 A 5 D 3 3 B 7
C
完全图 如果图G是一个简单图,并且每两个顶点之间都有一条 边,我们就称G为完全图.通常将具有n个顶点的完全 图记为Kn
图 论
图论的基本概念
图论是一新的数学分支,也是一门 很有实用价值的学科,它在自然科学、社 会科学等各领域均有很多应用。近年来它 受计算机科学蓬勃发展的刺激,发展极其 迅速。应用范围不断拓广,已渗透到诸如 语言学、逻辑学、物理学、化学、电讯工 程、计算机科学以及数学的其它分支中。 特别在计算机科学中。如形式语言、数据 结构、分布式系统、操作系统等方面均扮 演着重要的角色。
习题讲解
第4题: 下述对赋权图的正确描述是: 赋权图指的是图的边带权值 赋权图指的是图的顶点带权值 图的存储一般来说用邻接矩阵,赋权图则不能 没有权值的图可以看作权值都为1的赋权图
习题讲解 第5题: 下面两个图同构吗? v1 v2 v7 v6 v1 v3
v3
v6
v4
v5 v2
v4
v5
v7
习题讲解 第6题: 旅行者能否经过每一座桥恰好一次,既无遗漏 也无重复?
图的表示方法和基本操作 在程序中,我们可以用一个二维数组来表示一个图及其各结点的 邻接关系(邻接矩阵).此二维数组(矩阵)各元素定义为: 例 1 A(I,J)= 0 P I,J A(I,J)= 0 当I,J两个结点不相邻或I=J时. Vj有边,则Vj Vi 当I,J两个结点不相邻或I=J时. 当I,J两个结点相邻且距离为P I,J时; 对于带权图,邻接矩阵则要表示出各边的长度: 例 当I,J两个结点相邻时;
翻动12次,使12种可能的组合各出现一次,从而每只杯 子恰好翻动11次,变为杯口朝下.
习题讲解 第10题: 13只杯子,杯口全部朝上,如何将它们全部 翻过来,使得杯口全部朝下?但规定每一次翻动时,必 须12只杯子一起翻动. 需翻动12次 需翻动13次 需翻动15次 不能实现 不可能,因为若干次翻动的杯子的总个数为偶数。而如果 可能翻成杯口朝下的话,每只杯子均翻动奇数次,因而13 只杯子翻动的总次数也是奇数。
如果图G的两个顶点vi与vj之间有边相连,就说点vi 与vj是相邻的,否则就说点vi与vj是不相邻的.如果 顶点v是边e的一个端点,就说点v与边e是相邻的, e是从v引出的边.从一个顶点v引出的边的条数称 为v的次数,记作degGv,在不致混淆的时候,也可 以写成degv.
习题讲解 第1题: 完全图Kn有多少条边?
在图的定义中,如果删去“边必须是不同的”的限制,则导致 的结果称为多重图。 A D B 连接同一对顶点的两条或者更多条边(但必须有限)被称为多重 边或平行边。 C
如果再在多重图中则去“边必须连接不同顶点”的限制, 即允许有自环的存在,则由此导出的结果称为一般图。
A C D B
有向图和无向图 在图(或简单图)的定义中,如果我们把“无序”二字改 成“有序”二字,便得到所谓有向图的概念。更确切地 讲,所谓有向图D是一个有序对(V(D),A(D)),其中V(D) 是一个非空有限集,V(D)中的元素称为顶点,A(D)是由 V(D)中的元素组成的一些有序对构成,并且要求:①构 成有序对的两个元素不同,②任何两个有序对不同。显 然A(D)是一个有限集。A(D)中的元素称为弧。
编程找出如图的一笔画路线 3
4 6
2
5
1
3
4 6
2
5
1
构造邻接矩阵 3 数组links
4
2
6
0 1 0 0 1 1
1 0 1 1 0 1
0 1 0 1 0 0
0 1 1 0 1 1
1 0 0 1 0 1
1 1 0 1 1 0
5
1
计算每个点的度数存dgr[I]中,总度数存sum中,奇点个数存 odt中,若有奇点,则最后一个奇点位置存start中。 sum:=0;odt:=0;start:=1,dgr[i]:=0;
var dgr:array[1..n] of integer; i,j,r,sum,odt,start,nowd:integer;
procedure find; begin sum:=0;odt:=0;start:=0;
for i:=1 to n do
begin dgr[i]:=0; for j:=1 to n do dgr[i]:=dgr[i]+links[i,j]; sum:=sum+dgr[i]; if odd(dgr[i]) then begin odt:=odt+1;start:=i end; end; end;
图
• 图是由一些点和这些点之间的连线组成的。 • 1.结点和边:我们把图中的点称为结点,把两结 点之间的连线称作边. • 2.相邻:若两个结点之间由一条边连接,则称这 两个结点是相邻的. • 3.无向图和有向图:如果不考虑边的方向,这样 的图叫作无向图;反之,若边是有方向的,则这样 的图称为有向图,有向图要用箭头标明边的方 向.(树是一种有向图的特例.)
BEGIN find; if odt>2 then begin writeln('no sulution.');exit end; nowd:=start; write(start); repeat r:=0; repeat r:=r+1; until ((links[nowd,r]>0) and (dgr[r]>1))or((dgr[r]=1) and (sum=2)); links[nowd,r]:=0;links[r,nowd]:=0;sum:=sum-2; dec(dgr[nowd]);dec(dgr[r]); nowd:=r; write('-->',r); until sum=0; writeln; END.
显然,无向图的邻接矩阵是对称的,即若Vi 必有边.
例:A,B,C,D,E,F这六个城市,它们之间的交通 情况如图所示,其中箭头方向表示有单向通路。现在要 求从键盘输入一个出发点和一个到达点,判断有无通路, 并打印通路所经各点。
F
A
E C B D
数组A:
0 0 0 0 0 0
0 0 1 0 0 0
关于七桥问题的回答是否定的。直观上不难发现, 为了要回到原来的地方。要求与每一个顶点相关联的边 的数目,均应为偶数,从而可得从一条边进入,而从另 一条边出去,一进一出才行。在此基础上。Euler找到了 一般的图存在这样一条回路的充分必要条件。
定义 对于连通的无向图G,若存在一简单回路,它通过 G的所有边,则这回路称为G的(Euler)回路。 定理 若连通无向图G的所有顶点的度都是偶数,则存在 一条图G的Euler回路。
主程序:
输入起点s,终点e 给数组a赋初值,并把数组b初始化
累加路径条数的计数器z ←0 表示当前是第几步的step ←1; b[step] ←s 调用递归过程try(s) y Z=0 n
输出无通路
过程:try(i)
K←0
k ←k+1 y step ←step+1; y (A[I,k]=1)and(k<>s) n b[step] ←k k=e n
什么是图? 有序对G=(V(G),E(G))称为一个图,其中V(G) 是一个非空有限集。V(G)中的元素称为G的顶点, E(G)是V(G)中全体不同元素构成的不同无序对整合 的一个子集,E(G)中的元素称作G的边。我们称 V(G)是图G的顶点集,E(G)为G的边集;在不致混 淆的情况下,有时分别用V和E表示G的顶点集和边 集。G的顶点数|V(G)|有时也称作G的阶,通常用p 来表示;G的边的数目|E(G)|一般用q表示。为方便, 我们通常用uv来表示边{u,v}(其中u,v是V(G)的元 素)。如果e=uv E(G),则说e关联u和v,称u,v分 别是e的端点,并且称这两个顶点是相邻的。
将顶点涂上黑色或白色,使得 相邻顶点颜色互不相同.如果 所说的链存在.那么在链上的 顶点必然黑白相间,因此黑的 顶点与白的顶点的个数相同或 相差1,但图中黑点个数为7, 白点个数为9,相差为2,因此 所说的链不可能存在。
习题讲解 第9题: 12只杯子,杯口全部朝上,如何将它们全部翻 过来,使得杯口全部朝下?但规定每一次翻动时,必须 11只杯子一起翻动. 需翻动11次 需翻动12次 需翻动13次 不能实现
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 1 1 0 0 0
数组B:用来存放找到的这条通路的各个点。
方法:从输入的起点开始试探,每一步都有5种方案, 如果对应数组A[I,J]=1,表示有路可走,否则试下 一个结点,若走到死胡同(所有结点都试过了均无路 可走),则回溯上一步,换一个方案继续试走。
For i:=1 to n do
For j:=1 to n do
dgr[i]:=dgr[i]+links[I,j]
sum:=sum+dgr[i]
If odd(dgr[i]) then odr:=odt+1;start:=i
r:=0
r:=r+1
links[nowd,r]>0 and dgr[r]>1 OR dgr[r]=1 and sum=2 links[nowd,r]:=0;links[r,nowd]:=0 dec(dgr[nowd]);dec(dgr[r])
sum:=sum-2;write(‘’,r)
nowd:=r
Until sum=0
program as;
const n=6;
links:array[1..n,1..n] of integer= ((0,1,0,0,1,1),(1,0,1,1,0,1),(0,1,0,1,0,0),