欧拉图与哈密顿图

合集下载

欧拉图与哈密顿图

欧拉图与哈密顿图
哈密顿回路。
.
欧拉图与哈密顿图 1.2 哈密顿图及哈密顿通路
➢ 定义8.21
图G称为可2-着色(2-chromatic),
如果可用两种颜色给G的所有顶点着色, 使每个顶点着一种颜色,而同一边的两端点 必须着不同颜色。
.
欧拉图与哈密顿图 1.2 哈密顿图及哈密顿通路
✓ 定理8.16
设图G是可2-着色的。如果G是哈密顿 图,那么着两种颜色的顶点数目相等;如 果G有哈密顿通路,那么着两种颜色的顶点 数目之差至多为一。
✓定理8.14
设图G为具有n个顶点的简单无向图,如果G的 每一对顶点的度数之和都不小于n – 1 ,那么G中有 一条哈密顿通路;如果G的每一对顶点的度数之和 不小于n,且n≥3,那么G为一哈密顿图。
.
欧拉图与哈密顿图 1.2 哈密顿图及哈密顿通路
✓ 定理8.15
当n为不小于3的奇数时,
Kn上恰有 n 1 条互相均无任何公共边的 2
离散数学导论
.
欧拉图与哈密顿图 1.1欧拉图与欧拉路径
➢ 定义8.19
图G称为欧拉图(Euler graph),
如果图G上有一条经过G的所有顶点、所有
边的闭路径。图G称为欧拉路径(Euler
walk),如果图G上有一条经过G 所有顶点、所有边的路径。
.
欧拉图与哈密顿图 1.1欧拉图与欧拉路径
✓ 定理8.11
.
欧拉图与哈密顿图 1.2 哈密顿图及哈密顿通路
➢ 定义8.20
无向图G称为哈密顿图(Hamilton graph),
如果G上有一条经过所有顶点的回路
(也称这一回路为哈密顿回路)。称无向图有哈密顿 通路(非哈密顿图),如果G上有一条经过所有顶点的

离散数学课件15欧拉图与哈密顿图

离散数学课件15欧拉图与哈密顿图
证明 若G是平凡图,结论显然成立。
下面设G为非平凡图,设G是m条边的n阶无 向图,
并设G的顶点集V={v1,v2,…,vn}。 必要性。因为G为欧拉图,所以G中存在欧 拉回路,
设C为G中任意一条欧拉回路,vi,vj∈V, v2i0,2v0/7j/都23 在C上,
定理15.1的证明
充分性。由于G为非平凡的连通图可知,G中边数 m≥1。
2020/7/23
半欧拉图的判定定理
定理15.2 无向图G是半欧拉图当且仅当G是连通的 ,且G中恰有两个奇度顶点。
证明 充分性。设G的两个奇度顶点分别为u0和v0, 对G加新边(u0,v0),得G =G∪(u0,v0), 则G 是连通且无奇度顶点的图, 由定理15.1可知,G 为欧拉图, 因而存在欧拉回路C ,而C=C -(u0,v0)为G中一 条欧拉通路, 所以G为半欧拉图。
并2行从020/7遍/C23 上G 的i中某的顶欧点拉vr回开路始C行遍i,,i=每1遇,2,到…v,s*j,i,最就后
半欧拉图的判定定理
定理15.2 无向图G是半欧拉图当且仅当G是连通的 ,且G中恰有两个奇度顶点。
证明 必要性。设G是m条边的n阶无向图,因为G为 半欧拉图, 因而G中存在欧拉通路(但不存在欧拉回路), 设Г=vi0ej1vi1…vim-1ejmvim为G中一条欧拉通路, vi0≠vim。 v∈V(G),若v不在Г的端点出现,显然d(v)为偶 数, 若v在端点出现过,则d(v)为奇数,
欧拉对物理力学、天文学、弹道学、航海学、建筑学、音 乐都有研究!有许多公式、定理、解法、函数、方程、常数等 是以欧拉名字命名的。欧拉写的数学教材在当时一直被当作标 准教程。19世纪伟大的数学家高斯曾说过“研究欧拉的著作永 远是了解数学的好方法”。欧拉还是数学符号发明者,他创设 的许多数学符号,例如π,i,e,sin,cos,tg,Σ,f (x)等等, 至今202沿0/7/2用3 。

欧拉图和哈密尔顿图

欧拉图和哈密尔顿图

例 “一笔划”问题——G中有欧拉 通路

实例
上图中,(1) ,(4) 为欧拉图
中国邮递员问题-模型
数学模型:
构造无向权图G,以道路为边,路长为权 问题的解 ——G 中包含所有边的回路权最小,称为 最优回路(未必是简单回路)。 当G是欧拉图,则最优回路即欧拉回路。
周游世界的游戏
1859 哈密尔顿 “周游世界”游戏: 20个城市,每个城市恰游一次,回到出发地

a
10 12 9
从a出发的“较好的”回路 , a
7
14Biblioteka b7 13 11d
6
c
8
e
5
b
14
a
c
5
6
8
长度:40
e
e
d
算法精度下限
设算法所得的回路长度为d, d0 是最小H_
回路的长度,G有n点,则

d / d0 ½ [ln(n)+1]+ ½
改进:
如果在已有回路中,W(vi,vj)+ W(vi+1,vj+1)< W(vi,vi+1)+ W(vj,vj+1),
货郎担/旅行推销员(TSP)问题:
在一个赋权的完全图中,找出一个具有最小权 的H_回路,也即回路边的权之和最小 对该赋权图上的边,满足三角不等式(距离不 等式) W(a,b) W(a,c) + W(c,b)
数学模型
构造无向带权图G, VG中的元素对应于每个城市, EG中每 个元素对应于城市之间的道路,道路长度用相应边的权表示。 则问题的解对应于G中包含所有边的权最小的哈密尔顿回路。 G是带权完全图,总共有n!/2条哈密尔顿回路。因此,问题 是如何从这n!/2条中找出最短的一条 eg:含20个顶点的完全图中不同的哈密尔顿回路有约6000万 亿条-(1.216451017)/2,若机械地检查,每秒处理10万条,需 2万年

欧拉图与哈密顿图

欧拉图与哈密顿图

例15.3 在图15.6中给出的三个图都是 二部图。它们中的那些是哈密顿图?哪些 是半哈密顿图?为什么? 解 在(1)中,易知互补顶点子集 V1={a,f},V2={b,c,d,e}。设此二部图为G1, 则G1=<V1,V2,E>. p(G1-V1)=4>|V1|=2,由 定理15.6及其推论可知,G1不是哈密顿 图,也不是半哈密顿图。
是在G'中存在u到v的路径Г2,显然Г1 与Г2边不重,这说明u,v处于Г1∪Г2 形成的简单回路上。
三、求欧拉图中欧拉回路的算法
设G为欧拉图,一般来说G中存 在若干条欧拉回路,下面介绍两种求 欧拉回路的算法。
1.Fleury算法,能不走桥就不走桥: (1)任取v0∈V(G),令P0=v0. (2)设Pi=v0e1v1e2…eivi已经行遍, 按下面方法来从E(G)-{e1,e2,…,ei}中选 取ei+1: (a)ei+1与vi相关联; (b)除非无别的边可供行遍, 否则ei+1不应该为Gi=G-{e1,e2,…,ei}中的 桥。 (3)当(2)不能再进行时,算法停止。
p(C-V1)达到最大值|V1|,而当V1中顶点在C 上有彼此相邻的情况时,均有p(C-V1)<|V1|, 所以有p(C-V1)≤|V1|.而C是G的生成子图, 所以,有p(G-V1)≤p(C-V1)≤|V1|. 本定理的条件是哈密顿图的必要条件, 但不是充分条件。可以验证彼得松图(图 14.3中(1)所示)满足定理中的条件,但 它不是哈密顿图。当然,若一个图不满足 定理中的条件,它一定不是哈密顿图。
2.逐步插入回路法 设G为n阶无向欧拉图,V(G)={v1,v2,…,vn}, 求G中欧拉回路的逐步插入回路法的算法如下: 开始 i←0,v*=v1,v=v1,P0=v1, G0=G. 1.在Gi中任取一条与V关联的边 e=(v,v'),将e及v’加入到Pi中得到Pi+1. 2.若v '=v*,转3,否则i←i+1,v=v' , 转1.

8.欧拉图与哈密顿图

8.欧拉图与哈密顿图
所有圈遍历依次,显然符合v0是可以任意遍历的条件,但v0所不在的圈上的边没有经过

这与v0是可以任意遍历的相矛盾。
综合4.1.1和4.1.2,如果v0是任意行遍的,则G-v0中无圈。
2)充分性:4.2 证明如果G-v0中无圈,则v0是任意行遍的:
显然v0是G中所有圈的共同交点。
4.2.1 如果G是由1个圈组成,从v0出发,行遍这个圈。此时G上所有的边被遍历,形成一
(V v11,v12,...,v1n,V,v21,v22,...v2nV,v3.....,V)其实很容易证明,割点两侧的圈都
是连通的,且度数都为偶数,必要性得证
充分性
每个块都是欧拉图, 都是圈 其中得割点是V1,V2...,Vn,那么 V1,v11,v12,...,V2,v
G上哈密尔顿回路,G是哈密尔顿图。
11.,这道题又要画图,所以略,构成图的模型:把每个人看作顶点,如果两个人都会某种
语言,则这两个顶点之间连边!,所以能画出一个图,然后再在这个图上找出一条哈密顿
回路即可!
我找到 b a c e g f d b
12.今有2k个人去完成k项任务,已知每个人均能与另外2k-1个人中的k个人中的任何一个
那么内圈、外圈中分别还有1个点没有连接,根据回路的性质,外圈必须有2条1类边分别
和外圈的该点连接成一个通路,该通路的两端分别连接பைடு நூலகம்4条3类边中2条在外圈的端点,
显然此时至少有2条3类边不可能在回路中。因此不可能存在4条3类边的回路。
综合8.1和8.2,彼得森图不是哈密尔顿图。
9.设G为n阶无向简单图,边数m=1/2(n-1)*(n-2)+2,证明G为哈密顿图,再举例说明,当

欧拉图和哈密尔顿图

欧拉图和哈密尔顿图

(b)中去掉结点u1和u2以后,p(G–{ u1,u2})=3, 由此 可以判定,这两个图都不是哈密尔顿图。
用正十二面体代表地球。游戏题的内容是:沿着正十二面体的棱寻
找一条旅行路线,通过每个城市恰好一次又回到出发城市。这便是 Hamilton回路问题。
欧拉回路是指不重复地走过所有路 径的回路,而哈密尔顿环是指不重复地
走过所有的点,并且最后还能回到起点的回 路
哈密尔顿图
定义:通过图G的每个结点一次且仅一次的环称为哈密尔顿环。 具有哈密尔顿环的图称为哈密尔顿图。通过图G的每个结点一次 且仅一次的开路称为哈密尔顿路。具有哈密尔顿路的图称为半哈 密尔顿图。
解一
a
a:说英语; b:说英语或西班牙语; C: 说英语,意大利语和俄语; d:说日语和西班牙语 e:说德语和意大利语; f:说法语、日语和俄语; g:说法语和德语.
b
d
c
e g
f
解 设7个人为7个结点, 将两个懂同一语言的人之间连一条边 (即他们能直接交谈), 这样就得到一个简单图G, 问题就转化为 G是否连通. 如图所示, 因为G的任意两个结点是连通的, 所以 G是连通图. 因此, 上述7个人中任意两个人能交谈.
欧拉图算法
int main() { memset(g,0,sizeof(g)); cin >> n >> e; for (i = 1; i <= e; i++) { cin >> x >> y; g[y][x] = g[x][y] = 1; du[x]++; //统计每个点的度 du[y]++; } start = 1; // 如果有奇点,就从奇点开始寻找,这样找到的就是 for (i = 1; i <= n; i++) // 欧拉路。没有奇点就从任意点开始, if (du[i]%2 == 1) // 这样找到的就是欧拉回路。(因为每一个点都是偶点) start = i; circuitpos = 0; find_circuit(start); for (i = 1; i <= circuitpos; i++) cout << circuit[i] << ' '; cout << endl; return 0; }

欧拉图于哈密顿图

欧拉图于哈密顿图
§15.1 欧拉图
一、历史背景--哥尼斯堡七桥问题
}
1
二、定义 欧拉通路 (欧拉迹) ——通过图中每条边一次 且仅一次,并且过每一顶点的通路。 欧拉回路 (欧拉闭迹) ——通过图中每条边一次 且仅一次,并且过每一顶点的回路。 欧拉图 ——存在欧拉回路的图。
}
2
三、无向图是否具有欧拉通路或回路的判定
(3) 具有哈密尔顿回路而没有欧拉回路,
解:
(4) 既没有欧拉回路,也没有哈密尔顿回路。
解:
}
14
作业
习题十五 2、11、14、15、20
}
15
余顶点的入度均等于出度, 这两个特殊的顶点中,一个 顶点的入度比出度大1,另一 个顶点的入度比出度小1。
D 有欧拉回路( D为欧拉图) D 连通, D 中所有
顶点的入度等于出度。
}
6
例3、判断以下有向图是否欧拉图。
}
7
§15.2 哈密尔顿图
一、问题的提出
1859年,英国数学家哈密尔顿,周游世界游戏。
(2)
解:是哈密尔顿图,
存在哈密尔顿回路和通路。
}
11
例1、判断下图是否具有哈密尔顿回路,通路。
(3)
解:不存在哈密尔顿回路,
也不存在哈密尔顿通路。
}
12
例2、画一个无向图,使它
(1) 具有欧拉回路和哈密尔顿回路,
解:
(2) 具有欧拉回路而没有哈密尔顿回路, 解:
}
13
例2、画一个无向图,使它
G 中只有两个奇度 G 有欧拉通路 G 连通,
顶点(它们分别是欧拉通路的
两个端点)。
G有欧拉回路( G为欧拉图) G 连通, G 中均

离散数学--第十五章 欧拉图和哈密顿图

离散数学--第十五章 欧拉图和哈密顿图
13
实例
在上图中, (1),(2) 是哈密顿图; (3)是半哈密顿图; (4)既不是哈密顿图,也不是半哈密顿图,为什么?
14
无向哈密顿图的一个必要条件
定理15.6 设无向图G=<V,E>是哈密顿图,对于任意V1V且 V1,均有 p(GV1) |V1|
证 设C为G中一条哈密顿回路。
当V1顶点在C上均不相邻时, p(CV1)达到最大值|V1|,
求图中1所示带权图k29主要内容欧拉通路欧拉回路欧拉图半欧拉图及其判别法哈密顿通路哈密顿回路哈密顿图半哈密顿图带权图货郎担问题基本要求深刻理解欧拉图半欧拉图的定义及判别定理深刻理解哈密顿图半哈密顿图的定义
第十五章 欧拉图与哈密顿图
主要内容
➢ 欧拉图 ➢ 哈密顿图 ➢ 带权图与货郎担问题
1
15.1 欧拉图
大时,计算量惊人地大
27
例6 求图中(1) 所示带权图K4中最短哈密顿回路.
(1)
(2)
解 C1= a b c d a,
W(C1)=10
C2= a b d c a,
W(C2)=11
C3= a c b d a,
W(C3)=9
可见C3
(见图中(2))
是最短的,其权为9. 28
第十五章 习题课
主要内容 欧拉通路、欧拉回路、欧拉图、半欧拉图及其判别法 哈密顿通路、哈密顿回路、哈密顿图、半哈密顿图 带权图、货郎担问题
点.
由vi 的任意性,结论为真. 充分性 对边数m做归纳法(第二数学归纳法). (1) m=1时,G为一个环,则G为欧拉图. (2) 设mk(k1)时结论为真,m=k+1时如下证明:
5
从以上证明不难看出:欧拉图是若干个边不重的圈之 并,见示意图3.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧拉图与哈密顿图
Euler and Hamilton Graph
高晓沨 (Xiaofeng Gao)
Department of Computer Science Shanghai Jiao Tong Univ.
2016/12/6
欧拉道路与欧拉回路
Euler Path and Euler Circuit
2016/12/6
IntroductionToCS--Xiaofeng Gao
12
欧拉道路(欧拉迹)
【推论】若无向连通图G中只有2个度为奇数的顶 点。则G中存在欧拉道路。 【证明】设vi和vj是两个奇点,做G’=G+(vi,vj)。 则G’中各顶点的度都是偶数。由之前定理知,G’ 有欧拉回路,它包含(vi,vj)这条边。删去此边,即 可得到一条从vi到vj的简单道路,它恰好经过了G 的所有边,即是一条欧拉道路。
证明由欧拉回路定理或欧拉道路推论既得。
2016/12/6
IntroductionToCS--Xiaofeng Gao
20
范例 (2)
【例】 判断下图是否可以一笔画成:
a
b
d
c
e
G
a
b
e
d
c
H
2016/12/6
IntroductionToCS--Xiaofeng Gao
21
哈密顿回路与道路
【定义】无向图G的一条经过全部节点的初 级回路(道路)称为G的哈密顿回路(道路).
(i) 由定理条件:必有经过P中节点的初级回路C. (ii) 由连通性:C必可与C外某相邻节点构成比P更长的初
级道路.
2016/12/6
IntroductionToCS--Xiaofeng Gao
24
证明
【连通性】我们首先证明G是连通图。若G 有两个或更多个互不连通的连通分支,设 一个连通分支中有n1个节点,任取一个节 点v1。设另一个连通分支中有n2个节点,任 取一个节点v2。 因为d(v1)≤n1-1,d(v2)≤n2-1,故 d(v1)+d(v2)≤n1+n2-2<n-1,这与题设矛盾, 故G必连通。
29
H回路的判定
【定理】(Dirac,1952) 若简单图G(n≥3)的 任一节点的度≥n/2,则G有H回路.
【证明】利用上述推理求证。
2016/12/6
IntroductionToCS--Xiaofeng Gao
31
H回路的判定
【定理】(Ore,1960) 若简单图G(n≥3)的任 一对不相邻节点vi与vj都满足
2016/12/6
IntroductionToCS--Xiaofeng Gao
27
证明(续)
其次,我们从一条边出发构成一条路,证 明它是H道路。
设在G中有含p―1条边的路,p<n,它的 节点序列为v1, v2, …, vp。如果有v1或vp邻接 于不在这条路上的一个节点,我们可扩展 这条路,使它包含这一个节点,从而得到p 条边的路,否则,v1和vp都只邻接于这条路 上的节点。
9
其他解法
2016/12/6
IntroductionToCS--Xiaofeng Gao
11

【解】从任一点出发,比如 v1开始,可构造简单回路 C=(e1,e8,e6,e7,e2)。 G1=G―C中的v2、v5度非零 且是C中的节点。从v2开始G1 中有简单回路C1=(e3,e5,e4), 因此 C∪C1=(e1,e3,e5,e4,e8,e6,e7,e2) 包含了G的所有边,是G的欧 拉回路。
2016/12/6
IntroductionToCS--Xiaofeng Gao
19
解法(续)
由有向图的欧拉回路 推论,该图存在有向 欧拉回路,其中任何 一条都是原问题的解。 如下图即是一个合理 的方案。
2016/12/6
IntroductionToCS--Xiaofeng Gao
18
一笔画定理
【定理】一个图能一笔画成的充要条件是, G连通且奇顶点数为0或2。若奇点数为2, 则从其中一个奇顶点出发,终止于另一个 奇顶点上,完成一笔画。
d(vi) + d(vj) ≥n 则G有H回路.
【证明】由H道路判定定理知,G有H道路。 设其两端点是v1和vn,若G不存在H回路, 一定有d(v1) + d(vn)≤n-1<n,矛盾。
2016/12/6
IntroductionToCS--Xiaofeng Gao
30
范例
【例】举例说明存在不满足哈密顿图判定 的充分条件,但确实是哈密顿图。
【解】做正六边形A, A中所有顶点的度都为 2,则任意两个顶点的 度之和都是4,不满足 哈密顿图判定的充分 条件,但它显然是哈 密顿图。
2016/12/6
IntroductionToCS--Xiaofeng Gao
32
H回路的判定(闭合图引理1)
我们证明在这种情况下,存在一条回路包 含节点v1, v2, …, vp 。
2016/12/6
IntroductionToCS--Xiaofeng Gao
26
证明(续)
如果vp不邻接于vl-1,vm-1,…,vt-1中任一个,则vp 至多邻接p-k-1个节点,d(vp)≤p-k-1,d(v1)= k,故d(vp)+d(v1)≤p-k-1+k=p-1<n-1,即v1与 vp度数之和至多为n―2,矛盾。 至此,我们有包含所有节点v1, v2, …, vp的一条 回路,因为G是连通的,所以在G中必有一个 不属于该回路的节点vx与v1, v2, …, vp中的某一 个节点vk邻接.
2016/12/6
IntroductionToCS--Xiaofeng Gao
5
证明(3)
G1可能是非连通图,每个顶点的度保持为 偶数。这时,G1中一定存在某个度非零的 节点vi,同时也是C中顶点。否则C的顶点 与G1的顶点之间无边相连,与G是连通图矛 盾。同理,从vi出发,G1中所在的连通分量 内存在一条简单回路C1。C ∪ C1仍然是G 的一条简单回路,但它包括的边数比C多。 继续构造,最终有C’=C ∪ C1 ∪… ∪ Ck是 一条欧拉回路。
2016/12/6
IntroductionToCS--Xiaofeng Gao
4
欧拉图定理
【定理】图G是欧拉图的充要条件是G连通 且没有奇点。
【证】必要性 : 若G中有欧拉回路C,则C过每一条边有且仅 有一次。对任一节点v,如果C由ei进入v, 则 一定通过另一条边ej从v离开。因此v的度是 偶数。
2016/12/6
IntroductionToCS--Xiaofeng Gao
25
证明(续)
若v1邻接于vp,则v1, v2, …, vp, v1即为所求的 回路。假设与v1邻接的节点集是 {vl,vm,…,vt}(共k个),这里2≤l, m, …, j, …, t ≤p-1,如果vp邻接于vl-1,vm-1,…,vj-1,…,vt-1中 之一,譬如vj-1,则v1 v2 v3…vj-1 vp vp-1…vj v1 是所求的包含节点v1, v2, …, vp的回路。
2016/12/6
IntroductionToCS--Xiaofeng Gao
10
有向连通图的欧拉回路
【推论】若有向连通图G中各节点的正负度 相等,则G中存在有向欧拉回路.
证明方法类似之前定理,由G是有穷图且每 个节点正负度相等可以断定从G的任一节点 v0出发一定存在G的一条简单回路C。若 C=E(G),则得证。否则在G中删去C的各 边,找到新的简单回路C1,并添加至C中。 重复该步骤直至C成为欧拉回路为止。
2016/12/6
IntroductionToCS--Xiaofeng Gao
7
证明(2)
充分性 :由于G是有穷图,因此可断定从 G的任一节点v0出发一定存在G的一条简单 回路C。这是因为各节点的度都是偶数,所 以这条简单回路不可能停留在v0以外的某个 节点,而不能再向前伸延以构成闭通道C。
如果E=C, 则C就是欧拉回路,充分性得证。 否则在G中删去C的各边,得到G1=G―C。
2016/12/6
IntroductionToCS--Xiaofeng Gao
28
证明(续)
于是就得到一条包含p条边的路 (vx,vk,vk+1,…,vj-1,vp,vp-1,…,vj,…,v1,v2,…,vk-1)。 如下图所示,重复前述构造法,直到得到 n-1条边的路。
2016/12/6
IntroductionToCS--Xiaofeng Gao
简记为H回路(道路).
含有哈密顿圈的图称为哈密顿图,反之则 称为非哈密顿图。
对H回路问题
要求V(G) = n ≥ 3 只需考虑简单图,因为重边和自环不起作用
H回路的判定很困难,没有发现充分必要的 条件,只有若干充分条件.
2016/12/6
IntroductionToCS--Xiaofeng Gao
23
哈密顿圈
Hamilton Circuit
2016/12/6
IntroductionToCS--Xiaofeng Gao
22
H道路的判定
【定理】若简单图G的任意两节点vi与vj之间恒有 d(vi) + d(vj) ≥ n−1
则G中存在H道路.
证明思路: (1)由定理条件:G是连通图. (2)令P是G中最长初级道路,则P是H道路.若不是:
2016/12/6
IntroductionToCS--Xiaofeng Gao
15
范例
【例】七桥问题既不存在欧拉回路也不存 在欧拉道路.
2016/12/6
IntroductionToCS--Xiaofeng Gao
相关文档
最新文档