UPnP-av-AVArchitecture-v1-中文
1.概述和范围1.1.介绍本文档介绍了整体的 UPnP AV 的架构,为 UPnP AV 设备和服务的模板的基础。AV 架构定义 了通用的交互在 UPnP 控制点和 UPnP AV 设备之间。它是独立于任何特定的设备类型、内容格式和传输协议。它支持各种设备(如电视机、录像机、 CD/DVD 播放器/自动唱片点唱机、 机顶盒、音响系统、MP3 播放器、静态图像照相机、摄像机、电子相框 (EPFs),和PC) 。 AV 体系结构允许设备支持的格式的不同类型的娱乐内容 (如 MPEG2、MPEG4、 JPEG、MP3、Windows Media Architecture (WMA),位Control pointUPnP ActionsDevice 1Device 2Figure 1: Typical UPnP Device Interaction ModelAVControl pointAVUPnP ActionsDevice 1Device 2(Source)(Sink)Out-of- BandTranster ProtocolFigure 2: UPnP av Device Interaction Model大多数N∨方案涉及的内容(娱乐)流(即电影、歌曲、图片等)从一个到另一个设备。如图2所示,一个AV控制点与两个或更多作为源和汇的UPnP设备分别进行交互。虽然控制点使这两种设备的行为是协调的和同步的,但是设备本身使用非UPnP("的带外")的通信协议来彼此交互。控制点使用UPnP初始化和配置两个设备日的是想所需的内容从一个设备传送到弓一个设备。然而,由于内容使用"带外"传输协议传输,控制点是不直接参与实际内容传输的命令。控制点根据需要配置这些设备、触发内容流,然后退出这个过程。因此,传输开始后,控制点可以断开而不会扰乱内容流。换句话说,核心仟务(即传输内容)继续即使没有本控制点的参与正如上面的场景中所述,涉及三个不同的实体:控制点,媒体内容的来源(称为"Mediaserver")和接收器(叫做" Mediarenderer")。的内容。整个文裆的其余部分,所有三个实体的描述好像他们是独立在网络上的设备。虽然此配置可能很常见(即远程控制部录像机,和电视),但是AV体系结构支持这些实以仟意的组合,集成在单个物理设备内例如,一台电视可以视为呈现设备(如显示器)。然而,由于大多数电视包含内置调谐器,电视也可以作为服务尜改备因为它可以调到一个特定的渠道和发送该內容到达一个MediaRenderer[MR](即他的本地播放或者一些远端设备,如非调谐播放器)。同样地,许多MediaServers和/或 Media renderers还可能包括控制点功能。例如,MP3渲染器可能会在某些U控件(如一个小的显小屏和几个按钮),允许用户控制音乐的播放。3.播放体系架构StandardControl PointUPnPActions(UI Application)MediaServerMediaRendererDecoderContentDirectoryRendering ControlConnection ManagerOut-of-BandConnectionManagerAVTransporttransferprotocolTRAnsportTransfer ServerTransfer ClientSourceIsochronous or AsychronousSinkPush or pull图3般设备架构aka3-Box型最终用户最通常的任务就是把想要呈现的个人内容或者项目在一个指定的设备上呈现。如图3所示,内容回放情景包括三个不同的UPnP组件:一个 MediaServer[MS],一个Mediarenderer,和一个 UPnP Control point,这三个部分(每个都有明确定义的角色)一起工作完成任务。在这个过程中, MediaServer包含(娱乐)内容,这些内容是用户想要在Mediarenderer上渲染的(例如播放和听)。用户与控制点U|在本地交互,在 Media Server上选择想要的内容,和选择目标 Media RendererMediaServer上包含或者有接口对于各种各样的娱乐内容,这些内容存储在木地,或者是 MediaServer容易获取到的其他设备上。 MediaServer能够访问它的内容并且传输这些内谷到其他设各上通过使用某种网络传输协议。被 MediaServer公开的内容可能包含各种类型包括视频、音频、和/或静态图像。这些内容通过网络协议传输,数据形式也可以被Mediaserver和 Media Renderer所识別。 MediaServers可能支持一种或多种网络传输协议同时也有对应数据格式或者也能够将一种格式的数据转换成另一种给定的格式。例如一个Mediaserver包含一个vCR,CD/DVD播放器/自动点唱机,照相机,摄像机,PC机顶盒,卫星接收机,音频磁带播放机等等MediaRenderer通过网终从 MediaServer上获得内容。例如 MediaRenderer包含TV,立体,网终启用扬声器,MP3播放器,电子图片框架(EPF),控制音乐喷泉,等. Media rendere可以接收的薮据类型取决与他支持的传输协议与数据格式.·些 Mediarenderers可能只支持种内容(比如声音或者静止图片),这方面,其他 MediaRenderers可能支持更宽泛的内容类型包括视频、音频、静止图像控制点协调和管理着 Media Server和 Media renderer的操作,用户可以直接操作(如播放,停止,暂停)日的是完成想要的任务(如播放最喜欢的音乐)另外,控制点提供U(如果有)以便与用户交互,目的是控制和架作设备(选择想要的内容)控制点U的布局和暴漏他的功能是依赖于实现和控制点制造商的决定的。一些控制点的例」可能包拈一个有传统遙控器的电视,一个带有显示器的无线掌上电脑等注:以上描述谈及的设备“收/发数据都是基于家庭网络的”在AV架构上下文中,包含点对点连接如被用来连接ⅤCR和电视的RCA电缆。N架构视这种迕接为家庭网络的一小部分(如段)。参照 Connection Manager Service[CM]获取更详细的信息根据以上描述,AV体系架构由三个不同的执行定义好工作的部件组成。某些情况下,这些组件将会作为分开的,特别的设备存在。不管怎样,这不需要是特例。设备制造商可以自由的使用这些逻辑实体仼意组合,并装进个简单的物理设备中。这种情况下,组合设备中的单个组件可以使用标准UPnP控制协议(如基于HTTP的SOAP协议)或者使用一些私人通信机制进行交互。任何情况下,每个逻辑实体的功能保持不变。然而,在后面的这种(私人情况)情况,因为逻辑实体之冋的交互是私自的,独立的组件将不能够与其他没有安装私人协议的 UPnP AV设备交互。在图3中,控制点是唯的组件去启动UPnP动作。控制点请求配置 MediaServer和MediaRenderer目的是使想要的内容从 MediaServer传输到 MediaRenderer(使用一种Media Server和 MediaRenderer都支持的传输协议和数据格式, Media Server和 Media Renderer向控制点调用一些UPnP动作。不管怎样,如果需要 MediaServer和/或 Media Renderer可以向控制点发送事件通知目的是通知控制点 Media Server和/或 Media Renderer的内部状态发生了改变。Mediaserver和 Mediarenderer不会通过UPnP动作相互控制.然而,为∫传输数据Mediaserver和 Mediarenderer使用一种“带外”(如非UPnP)数据传输协议直接的传输內谷。控制点不涉及实际的数据传输他仅仅是根据需要配置Medⅰ a server和Medⅰ rEnderer启动传输数据的过稈。一旦传输开始,控制点就彻底退出数据传输过稈.不管怎样如果用户需要,控制点能够控制数据的流动通过调用各种各样的 TRAnsport动作,如停止、暂停、FF、重放、过、浏览等。另外,控制点也能控制显示端的各种渲染效果,如亮度、对比度、音量、平衡等31媒体服务Mediaserver被用于查找有效通过家庭网络的数据。 MediaServers包含非常广泛的设各种类,包括录像机、DVD播放器、卫星/电报接受器、电视调谐器、无线电调谐器CD播放器、音频磁带播放器、个人电脑、MP3播放器等。一个 MediaServer的主要目的是允许控制点去枚举(如浏览和查找)可以被用户用来去渲染的数据。 Mediaserver包含 Content DirectoryService[CDS], a ConnectionManager Service[CM],和个可选择的 AVTransport Service[AT(依赖与于支持的传输协议些 Mediaserver能够同时传输多个数据芇点的,如一个基于硬磁盘音频自动存储塔能够同时传输多个音频文件到网络.为了支持这种类型的Mediaserver, Connection Manager为每一个链接(即每个流)分配记录一个唯一的ConnectionS。这个 Connections允许一个第三方控制点去获取 Media Server的活动链接信息3. 1.1. Content Directory Service这个服务提供了组动作,这些动作允许控制点去枚举服务器提供到家庭网络上的数据。这个服务的主要动作是 Content Directory: Browse(.这个动作允许控制点去获取细节信息关于服务器可以提供的每一个数据节点。这个信息(即元数据)包含属性,如名字,作者,创建时间,尺寸等。另外,返回的元数据鉴定」服务器支持的传输协议与数据格式。控制点使用这些信息决定,给定的 Media renderer是否能够渲染这些格式数据。3.1.2. ConnectionManager Service这个服务被用来管理关联着一个特定设备的连接,这个服务 Media Server上下文)的主要动作是 Connection Manager: Prepare ForConnection(.当运行的时候,这个动作被控制点调用,给服务器个信息,让服务器为处理即将到来的传输准备自己。依赖于指定的传输协议和数据格式。这个动作可以返回一个 AVTransport服务的 Instanced,控制点可以使用去控制数据流(如停止,暂停,快进等)。下面描述,这个 Instanced被用来区别多个 AVTransport服务对象,每个⑩D都关联着一个特定的连接通向渲染端。多个(虚拟)的 AVTransport对象允许 MediaServer冋时支持多个渲染器。当控制点想要退出这个连接,他应该调用 Media Server的动作 Connection Manager: Connection Complete((如果运行着)来释放连接如果 ConnectionManager: Prepare For Connection(动作没有运行,控制点只能在给定的时间内支持一个简单的渲染器。这种情况下,控制点应该使用 Instanced=03.1.3. AVTransport Service这个(可选的)服务被控制点用来回放关联着指定 AVTransport的内容。这包含停止,暂停,搜索的能力等。依赖于所支持传输协议和/或数据格式,个 MediaServer会或不会运行这个服务。如果支持, MediaServer可以区别多个服务对象通过使用 Instanced,这个ID包含在每个的音视频传输动作中。新的音视频传输对象的创建通过 ConnectionManager的Connection Manager: Prepare For Connection(动作.,每个新的服务对象都会被分配一个新的对象|D3.2. MediaRendererMediaRenderer被用来渲染(如显小和播放声音)从家庭网络中获取的内容。这包含多和类型的设备,包括电视机、音响、音箱、便携式音频播放器,音乐控制饮水机等。它主要的特点是它允许控制点控制内容渲染的效果(如亮度、对比度、卷、静音、等等)。另外,依赖于被用来在网络上获取数据的传输协议, MediaRenderer也会允许用户控制数据流(如停止,暂停,搜索等)。 Media Renderer包括一个 Rendering Control Service[RCSConnection Manager Service,和一个可选的 AVTransport服务(依赖于支持那种传输协议)。为了支持渲染设备可以在同一时刻操作多个内容节点(如音频混音器如卡拉Ok设备)渲染控制和服务都包含多个这些服务的独立(逻辑)对象。这个服务的每个(逻辑)对象都绑定在一个传入连接上。这允许控制点独立于其他人控制传入内容。这些服务的多个逻辑对象通过唯一的 Instanced米区分。控制点的每个动作调用包含这个辨识正确对象的ID。3.2. 1 Rendering ControlService这个服务提供·列动作,允许控制点控制渲柒器如何的去显示一块块的内容。这包含显示特性,包括亮度、对比度、音量,静音等。 Rendering ControlServic支持并发的,动态的服务对象,这就允许一个"混合在一起"的一个或多个内容项的渲染器(如面中画窗口电视或音频混音器设备)。新的服务对象实例由 Connection Manager; Prepare ForConnection()动作创建。如果 Connection Manager;: PrepareForConnection()动作没有执行, Instanced的缺省值是0。3.2.2. Connection Manager service这个服务被用来管理关联设备的连接。在 Media Renderer的上下文中,这个服务的主要动作是 Connection Manager: GetProtocolInfo()。这个动作允许控制点去枚举 MediaRenderer支持的传输协议和数据类型。这个信息被用来预先确定·个 Media Renderer是否可以去渲染个指定的内容项。个 MediaRenderer也会执行可选的动作ConnectionManager;: Prepare ForConnection()。这个动作由控制点调用去给渲染器一个指示让他准备自己为」即将到来的传输。另外,这个动作分配一个唯一的 Connection|D,这可以使第三方控制点获取到 Media Renderer正在使用的连接的信息。而且,依赖于被使用的传输办议和数据格式,这个动作会返回一个唯一的 AVTransport InstanceID,控制点可以使用这个去控制内容流(如停止,暂停,搜索等)。(详细信息请参阅下面的 AVTransport章节)。最后,ConnectionManager: PrepareForConnection()动作也返回一个唯一的渲染控制实例1D,控制点可以通过这个1D控制关联的内谷的渲染效果如前面所述。当控制点想要退出连接,他应该调用渲染器的 Connection Manager: Connection Complete(动作(如果开启了)去释放连接。如果没开启,则 InstanceID应被设置成0。3.2.3. AVTransport Service这个可选择的服务被控制点用来控制相关内容。这包括播放、停止、暂停、搜索等的能力依赖于所支持的传输协议和/或数据格式,渲染器可能会也可能不会运行这个服务。为了支持 MediaRenderer可以同时控制多个设备项。 AVTransport service会支持这个服务的多个逻辑实例。如上文所述, AVTransport InstanceID由 ConnectionManager: Prepare ForConnection()动作分配,来区分多个服务实例。3, 3. Control point控制点协调着 Media server和 Mediarenderer的操作,通常通过控制点U与用户进行交互。一个控制点不是UPnP设各,即他作为一个网络上的设备,它不是明显的,因为它不提供任何UPnP服务。相反的,控制点调用其它UPnP设备上的服务目的是触发一些想要的行为,发生在远端设备上。以下描述了一般控制点的泛型规则,用于与多种运行中的 MediaServer和MediaRenderer进行交互。1.发现N∨改备: MediaServers和 Media Renderers使用UPnP发现机制在家庭网络中被现,2.找到所需的内容:使用服务器的 ContentDirectory: Browse()或 Content Directory: Search操作,所需的内容项就定位了。由 ContentDirectory: Browse(/ Search(返回的信息中,包含传输协议和效据格式,这就支持 MediaServer在家庭网络中传输数据3.获取渲染器的支持协议/格式:使用 MediaRenderer的Connection Manager; GetProtocollnfo(所支持的传输协议和数据格式都由 Media Renderer的返回值返回给控制点4.比较/匹配协议/格式:由 ContentDirectory返回的关于想要的内容项的协议/格式信息,与由 MediaRenderer的 Connection Manager: Get Protocollnfo()返回的协议/式信息相匹配控制点选择一个被 Media server和 Mediarenderer都支持的传输协议和数据格式5.配置服务器/渲染器:设备的 Connection Manager: Prepare For Connection()动作(如果启用)通知 MediaServer和 Mediarenderer一个退出/加入的连接即将被迫使用指定的传输协议和数据格式,这是之前选好的。依赖于选择的传输协议, MediaServer或者 MediaRenderer将会返回 AVTransport InstanceID。这个被用来与 AVTransport Service相结合(设备返回的 AVTransport InstanceID)去控制内容流(如 TRAnsport:Pay(), TRAnsport:stopAVTransport: Pause(), AVTransport:seek()等),另外,渲染器将会返回一个渲染控制实例1D,这个被控制点用来控制渲染效果。注:因为 Connection Manager;: PrepareForConnection是一个可选动作,这可能会有一种情况是 MediaServer和/或 Media Renderer都没运行 Connection Manager: PrepareForconnection()这种情况发生时 MediaServer和 Mediarenderer都没有返回一个 AVTransport InstanceID,控制点就使用 InstanceID=0去控制内容的流。详细信息参考 ConnectionManager和 TRAnsportService「AVT]l。6.选择需要的内容:使用 AVTransport服务(服务1D由 Server或者 Renderer返回)调用AVTransport: SetAVTransportUR)动作去确认需要被传输的内容项。7.启用传输内容:使用 AVTransport服务,用户调用一种想要的传输控制动作(如AVTransport: Play(), AVTransport: Stop(), AVTransport: Seek(*)8.调整呈现特性:使用 Media Renderer的 Rendering Control service[RCS],用户调用任何想要的控制动作(如调整亮度,对比度,声音,静音等)9.重复:近择下·内容:使用 TRAnsport: etAvtransportURI(或者 AVTransport:SetNextAVTRansportUR)动作,确认下一个内容项要被传送从同一个服务器传送到同个渲染器,根据需要重复。10.清理服务器/渲染器:当该公话终止和 Media Server和 Mediarenderer不再需要交互内容,Mediaserver和 Mediarenderer的 ConnectionManager: Connection Complete()动作被调用来关闭 Media Server的连接基于上面的交互顺序,下面的图表按时间顺序举例说明」控制点, MediaServer、MediaRenderer之间典垩的交互序列。Play back General Interaction DiagramMediaControMediaServerPointRendererCDS: Browse/ SearchContent ObjectsCM: GetProtocolInfo(pProtocol/Format List D>Choose MatchingProtocol and formatCM: PFepareF or ConnectionAVT InstancedCM:PrepareForConneption(AVT, RCS InstancelDsAVT: SetAVTransportURIOAvT:: PlaAny AVT flow controloperation as neededte. g. stop, pause, seekOutOf. BandContent transferRCS.: Setvolume0Any RCS renderingcontrol operation(e. g. vollute,brightness, contrastContent Transfermplete-t--- Repeat as NeededCM: ConnectionComdleteO)CM: onnection Complete(Figure 4 General Interaction Diagram of the 3-Box model3-Boⅹ模型是最综合的UPnP交互模型,它也可能把控制点和服务联合在一起,形成一综合性设各。这种情况被2-Bσⅹ模型解释如下。3.31.2-BoX模型:控制点与译码器standardUPnPActionsMedia serverControl point(UI ApplicationContent DirectoryOut-ofBandDecoderConnectionManagertransferprotocolTransfer ServerTransfer clientSourceIsochronous or AsychronousSinkPush or pullFigure 5 Control point with Decoder如图5所示,内容回放场景涉及到两个截然不同的UPnP组件:一个 Media Server,和个带有译码器的UPnP控制点。这两个组件(每个都是定义好的角色)一起工作米完成任务,在这种情况下, MediaServer中包含(娱乐)用户想要在设备上渲染的内容。用户与控制点通过U交互来定位和选择想要的在 Mediaserver上的内容,并且使用自己的译码器播放它。这个控制点系统的状态不会被其他控制点追踪,因为“带外”传输不会在服务器注册或者播放器设备由于缺少 AVTransport service。这种情况解释为最简单的 UPnP Ay交互模型。注:这种情况下,控制点只与 Media Server进行父互。注:“Sink"在这种情况卜是 MediaRenderer的背板,甚至不是UPnP设备.332.2-Box模型:控制点有内容StandardActionsControl PointMediaRendererWith Content(UI Application)Cutof-BarRenderingControlContentprotocolConnectionManagerTransfer serverAVTransportTransfer clientSourceIsochronous or AsychronousSinkPush or pullFigure 6 Control point With Content
- 2020-11-30下载
- 积分:1
图论算法理论、实现及应用.pdf
图论算法理论、实现及应用.pdf清华大学前言、图论研究及图论教学0图论( Graph Theory)是数学的一个分支,它以图为研究对象。图论中的图是由若干个给定的顶点、及若干条连接两个顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用顶点代表事物,用连接两个顶点的边表示相应两个事物间具有这种关系。这种图提供了一个很自然的数据结构,可以对自然科学和社会科学中许多领域的问题进行恰当的描述或建模,因此图论研究越来越得到这些领域的专家和学者的重视。图论最早的研究源于瑞士数学家莱昂哈德·欧拉( Leonhard euler,1707~1783),他在1736年成功地解决了哥尼斯堡(Kω nigsberg)七桥问题,从而开创了图论的研究。哥尼斯堡七桥问题。东普鲁士哥尼斯堡市(今俄罗斯加里宁格勒)有一条布格( Pregel)河,如图1白a)所示。布格河横贯哥尼斯堡城区,它有两条支流,在这两条支流之间夹着一块岛形地带,这里是城市的繁华地区。全城分为北、东、南、岛四个区,各区之间共有七座桥梁联系着。人们长期生活在河畔、岛上,来往于七桥之间。有人提出这样一个问题:能不能一次走遍所有的七座桥,而每座桥只准经过一次?问题提出后,很多人对此很感兴趣,纷纷进行试验,但在相当长的时间里,始终未能解决。(B)东(D)C南C)(a)(b)图1七桥问题欧拉在1736年解决了这个问题,他将这个问题抽象为一个图论问题:把每一块陆地用一个顶点来代替,将每一座桥用连接相应两个顶点的一条边来代替,从而得到一个图(如图1(b)所示)欧拉证明了这个问题没有解(详见本书5.1节),并且推广了这个问题,给出了“对于一个给定的图,能否用某种方式走遍所有的边、且没有重复”的判定法则。这项工作使欧拉成为图论及拓扑学的创始人。在此后的两百多年时间里,图论的研究从萌芽阶段,逐渐发展成为数学的一个新分支。特别是从20世纪初期开始,在生产管理、交通运输、计算机和通讯网络等方面涌现了许多离散性问题,这极大地促进了图论的发展。20世纪70年代以后,由于高性能计算机的出现,使大规模的图论问题的求解成为可能。现在,图论理论广泛应用在运筹学、计算机科学、电子学、信息论、控制论、网络理论、经济管理等领域。由于图论的重要性,越来越多的大学将图论单独作为一门课程来开设,把它作为数学、计算本文中关于图论课程教学改革的一些思想,已经发表在《计算机教育》2009年第20期上,论文题目为《计算机专业图论课程教学改革探索》,即参考文献[20获得《计算机教育》杂志社举办的“英特尔杯”20090年全国计算机教育优秀论文评比二等奖)。图论算法理论、实现及应用杋科学、电子学、管理学等专业本科生和硏究生的必修课或选修课。很多其他课程的内容也都涉及到图论知识,如离散数学、运筹学、拓扑学等。介绍图论理论的教材逐渐增多,其中也不乏优秀的教材,如文献[。这些课程和教材或者是侧重于完整的图论知识体系介绍、以及复杂的图论定理的数学证明,或者是侧重于从应用数学的角度研究图论在各领域的应用。另外,为了实现用计算杋程序求解各种应用问题,计算机科学家抽象岀许多数据结构,如栈队列、堆、树及二叉树、图等,其中图是最重要的数据结构之一,也是应用得最广的数据结构之。数据结构课程是专门硏究这些数据结枃的描述、实现及应用的课程。数据结构课程讲到图论部分时,侧重于图结构的描述、图结构的存储、少量基本的图论算法的实现等等许多学生(特别是计算机专业的学生)在学习图论时,都不满足于图论算法的手工和草稿纸演算,迫切地想知道如何用程序实现图论中的算法,以及如何将这些算法思想用来求解实际问题据作者调査统计,市面上侧重于用程序实现图论算法、并通过例题阐述图论算法思想及其应用的教材少之又少。本教材希望能弥补这一缺憾。所以本书立足于图论算法理论和思想的描述及程序实现,并以大量的 ACM/ICPC竞赛题目来阐述图论算法思想在求解这些题目中的应用。接下来简要地介绍 ACMICPC程序设计竞赛。、 ACM/ICPC程序设计竞赛1.ACMIICPCACM/ICPO( ACM International Collegiate Programming Contest,国际大学生程序设计竞赛)是由美国计算机协会ACM( Association for Computing Machinery)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛,其目的旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。该项竞赛从1977年第一次举办世界总决赛以来,至今已连续举办30多届了。该项竞赛一直受到国际各知名大学的重视,并受到全世界各著名计算机公司的高度关注。ACM/ICPC竞赛分区域预赛和总决赛两个阶段进行,各预赛区第一名自动获得参加世界总决赛的资格。世界总决赛安排在每年的3~4月举行,而区域预赛安排在上一年的9~12月在各大洲举行。ACMICPC竞赛以组队方式进行比赛,每支队伍由不超过3名队员组成,比赛时每支队伍只能使用一台计算机。在5个小时的比赛时间里,参赛队伍要解答610道指定的题目。排名时,首先根据解题数目来排名,如果多支队伍解题数量相同,则根据队伍的总用时进行排名(用时越少,排名越靠前)。每支队伍的总用时为每道解答正确的题目的用时总和。每道解答正确的题目的用时为从比赛开始计时到该题目解答被判定为正确的时间,其间每一次错误的提交运行将被加罚20分钟时间。最终未正确解答的题目不记入总时间,其提交也不加罚时间。ACMICPC竞赛在公平竞争的前提下,提供了一个让大学生充分展示用计算机解决问题的能力与才华的平台。 ACMICPC竞赛鼓励创造性和团队协作精神,鼓励在编写程序时的开拓与创新,它考验参赛选手在承受相当大的压力下所表现出来的非凡能力。竞赛所触发的大学生的竞争意识为加速培养计算机人才提供了最好的动力。竞赛中对解决问题的苛刻要求和标准使得大学生对解决问题的深度和广度展开最大程度的追求,也为计算机科学的研究和发展作了一个最好的导向。2.在线评判网站随着 ACMICPC程序设计竞赛的推广,各种程序在线评判( Online judge,简写为OJ)网站也应运而生,这为程序设计爱好者提供了一种新的程序实践方法:在线程序实践。①作者对互动出版网站(www.china-pub.com)和卓越亚马逊网站(www.amazon.cn)上列出的全部图论相关书目及目录进行了仔细的分析,从而得出的结论在线程序实践是指由OJ网站提供题目,用户在线提交程序,OJ网站的在线评判系统实时评判并反馈评判结果。这些题目一般具有较强的趣味性和挑战性,评判过程和结果也公正及时,因此能引起用户的极大兴趣。用户在解题时编写的解答程序通过网页提交给在线评判系统称为提交运行,每一次提交运行会被判为正确或者错误,判决结果会及时显示在网页上用户从评判系统收到的反馈信息包括:" Accepted程序通过评判!Compile error"—程序编译出错。" Time limit exceeded"—程序运行超过该题的时间上限还没有得到输出结果。" Memory Limit Exceeded-内存使用量超过题目里规定的上限。"outpυ ut Limit exceeded"—输出数据量过大(可能是因为陷入死循环了)。" Presentation error"—输出格式不对,可检査空格、空行等等细节。" Run Time error"—程序运行过程中出现非正常中断,如数组越界等。Wrong Answer"—用户程序的输出错误。等等。用户可以根据OJ系统反馈回来的评判结果反复修改程序,直到最终收获 Accept(程序正确)。这个过程不仅能培养用户独立分析问题、解决问题的能力,而且每成功解决一道题目都能给用户带来极大的成就感。、本书安排本书共分9章,每章内容安排如下:第1章介绍图论的一些基本概念,以及图的两种重要存储表示方法:邻接矩阵和邻接表,并初步讨论了存储方式对图论算法复杂度的影响。第2章讨论了图的遍历,遍历是很多图论算法的基础。本章介绍了两种重要的遍历方法:深度优先搜索和广度优先搜索,并对这两种遍历算法的思想、程序实现、算法复杂度作了详细的分析和讨论。本章还讨论了活动网络,包括AOV网络与拓扑排序问题、AOE网络和关键路径问题。第3章讨论树与生成树问题,主要介绍求无向连通图最小生成树的三个算法:克鲁斯卡尔( Kruskal)算法、 boruvka算法和普里姆(Prin)算法,并对这三个算法的思想、程序实现、算法复杂度作了详细的分析和讨论。另外,本章还讨论了判断生成树是否唯一的方法。第4章讨论了有向网(或无向网)中一个典型的问题:最短路径问题。本章介绍了求解最短路径问题的4个算法:Dsa算法、 Bellman-FoH算法、SPH算法和Fod算法,这4个算法分别适用于有向网(或无向网)中各边权值的取值的不同情形及问题求解的不同需要。本章着重对这4个算法的思想、递推过程、算法复杂度作了详细的讨论,并对这4个算法作了详细的对比分析。本章还介绍了求最短路径的算法思想在求解差分约束系统中的应用。第5章讨论了可行遍性问题,包括欧拉回路、汉密尔顿回路以及中国邮递员问题。前两个概念容易混淆,欧拉回路要求经过每条边一次且仅一次并回到出发点,而汉密尔顿回路要求经过每个顶点一次且仅一次并回到出发点。本章介绍这相关概念及定理,并讨论这两种回路及中国邮递员问题的求解方法和应用。第6章讨论了网络流问题。许多系统包含了流量问题,例如,公路系统中有车辆流,控制系统中有信息流,供水系统中有水流,金融系统中有现金流等等。从问题求解的需求出发,网络流问题可以分为:网络最大流,流量有上下界的网络的最大流和最小流,最小费用最大流,流量有图论算法理论、实现及应用上下界的网络的最小费用最大流等。本章介绍各种网络流问题的求解方法。第7章讨论了点支配集、点覆盖集、点独立集、边覆盖集、边独立集(匹配),这些概念之间存在一定的联系,也容易混淆。本章主要讨论了各种匹配问题,以及求解二部图最大匹配的算法程序实现和应用。第8章讨论图的连通性,这是图论中一个重要的概念。本章介绍了无向连通图和非连通图无向图的点连通性(包括割顶集、割点、顶点连通度、点双连通图等)、边连通性(包括割边集、割边、边连通度、边双连通图等)、有向图的强连通性(包括强连通、弱连通和单连通)。本章着重介绍上述概念及求解算法。第9章讨论平面图和着色问题。本章介绍了平面图和非平面图的概念、平面图的判定方法,以及图的顶点着色、边着色、平面图的面着色等概念和求解算法。四、本书读者对象及本书特点本书的读者对象为计算机专业学生或对 ACM/ICPC竞赛感兴趣的学生,可以作为高等院校计算机(或相关专业)的图论等相关课程的主教材,也可作为 ACMICPO竞赛的辅导教材。学生或读者应该具备CC艹语言知识,已经掌握了一定的程序设计思想和方法,具备一定的算法分析与设计能力,并能熟练使用数据结构。本书在内容取材、描述上具有如下特点。1)许多图论教材对图论概念的描述不一致,造成读者的阅读困难,本书试图改变这一现状。在每个概念的表述上作者査阅了大量的图论著作并进行比较分析。在本书中,作者对每个概念采用大多数图论教材采用(或约定)的名词、定义方法等。2)本书对图论算法思想的描述尽可能采用浅显易懂的语言来描述。3)本书忽略所有图论定理的证明,着重分析图论算法的思想,重点在于这些图论算法的程序实现。对图论算法的程序实现是以 ACMICPC例题来阐述的。上下两册书共收录了130余道ACMICPC竞赛题目,例题和练习题各约占一半。本书附录列出了本书所有例题和练习题在ZOJ、POJ及UVA上的题号。4)本书图表内容丰富。全书共绘制了270余幅图表,为此在目录后专门列出了本书的图录5)为方便读者阅读和使用,作者对本书中出现的图论术语、符号、图论算法及应用分别作了索引,列在本书后面五、致谢本书收录了130余道 ACMICPC竞赛题目,这些题目在阐述图论算法思想、演示图论算法应用等方面起着重要的作用,部分例题的解答程序也参考了网络上发布的一些源代码。同时,本书在编写过程中还参考了国内外多本优秀的图论教材(详见参考文献)。在此,编者对这些题目、源代码和图论教材的作者一并表示忠心的谢意。本书的编写和岀版得到了2010年浙江省教育科学规划研究课题“以大学生学科竞赛为契机推动课程群的规划与建设”(编号:SCG156)的支持,在此表示感谢。另外,本书的岀版得到了北京大学出版社的大力支持,在此表示衷心的感谢。由于作者水平有限,在编写本书时难免出错,欢迎读者指正,或者读者有什么好的建议,都可以联系编者:wguiping@163.com。不胜感激!!!编者2010年1月目录第1章图的基本概念及图的存储3.1.1树11基本概念1113.1.2森林5551.1.1有向图与无向图32生成树及最小生成树1.1.2完全图、稀疏图、稠密图321生成树1.1.3顶点与顶点、顶点与边的关系…3322最小生成树1.14顶点的度数及度序列33克鲁斯卡尔()算法1.1.5二部图与完全二部图3.3.1算法思想116图的同构332等价类与并查集1.17子图与生成树3.3.3 Kruskal算法实现118路径56778993.34Boruvka.951.19连通性3.35例题解析1.1.10权值、有向网与无向网34普里姆(Pim)算法图的存储表示341Prim算法思想106121邻接矩阵……342Prim算法实现1071.2.2邻接表15343关于普里姆算法的进一步讨论.11012.3关于邻接矩阵和邻接表的进一步344例题解析111讨论5判定最小生成树是否唯120第2章图的遍历与活动网络问题3.5.1最小生成树不唯一的原因分析.1202.1DFS遍历3.52判定最小生成树是否唯一的方法12122.1DFS算法思想4443.53例题解析212DFS算法的实现及复杂度分析……25第4章最短路径问题1272.1.3例题解析284.1边上权值非负情形的单源最短路径问题22BFS遍历Dijkstra算法12722.1BFS算法思想4.1.1算法思想12722.2BFS算法的实现及复杂度分析…414.1.2算法实现1292.2.3关于DFS算法和BFS算法的说明.434.1.3关于 Dijkstra算法的进一步讨论.1322.2.4例题解析.…434.14例题解析13323活动网络一AOV网络614.2边上权值为任意值的单源最短路径问题2.3.1AOV网络与拓扑排序61一 Bellman-Ford算法…1432.3.2拓扑排序实现方法42.1算法思想1432.3.3关于拓扑排序的进一步说明….6742.2算法实现1452.34例题解析42.3关于 Bellman-Ford算法的进一步24活动网络一AOE网络78讨论1482.4.1AOE网络与关键路径4.24例题解析2.42关键路径求解方法794.3 Bellman-Ford算法的改进一SPFA算法.161第3章树与图的生成树4.3.1算法思想….163.1树与森林…4.32算法实现图论算法理论、实现及应用4.3.3关于SPFA算法的进一步讨论…16564.1基本概念3244.34例题解析……166642最小费用最大流算法32544所有顶点之间的最短路径一Foyd算法…175644例题解析3274.4.1算法思想176第7章支配集、覆盖集、独立集与匹配3404.42算法实现…1777.1点支配集、点覆盖集、点独立集34044.3关于Foyd算法的进一步分析….1807.1.1点支配集3404.44例题解析1807.1.2点覆盖集3414.5差分约束系统7.1.3点独立集4.5.1差分约東系统与最短路径7.1.4点支配集、点覆盖集、点独立集4.52例题解析之间的联系第5章可行遍性问题2087.2点支配集、点覆盖集、点独立集的求解.34551欧拉回路2087.2.1逻辑运算34551.1基本概念及定理2087.22极小点支配集的求解34551.2欧拉回路的判定2117.2.3极小点覆盖集、极大点独立集的52欧拉回路的求解219求解52.1DFS搜索求解欧拉回路21973边覆盖集与边独立集.347522 Fleury(佛罗莱)算法.7.3.1边覆盖集….34753中国邮递员问题2337.32边独立集(匹配)54汉密尔顿回路2347.3.3最大边独立集(最大匹配)与最541基本概念及定理235小边覆盖集之间的联系5.42汉密尔顿回路求解74匹配问题350第6章网络流问题242741完美匹配3516.1网络最大流242742二部图的完备匹配与完美匹配..35161.1基本概念24274.3最佳匹配3526.1.2最大流最小割定理2477.44匹配问题求解的基本概念及思路3526.1.3网络最大流的求解2487.5二部图最大匹配问题的求解3536.1.4般增广路方法7.5.1网络流解法353Ford- Fulkerson算法2487.42匈牙利算法3556.1.5最短增广路算法2567.4.3例题解析6.16连续最短增广路算法- Dinic算法260第8章图的连通性问题.380617一般预流推进算法2628.1基本概念3806.1.8最高标号预流推进算法26581.1连通图与非连通图.3806.1.9网络最大流算法总结2668.1.2无向图的点连通性3816.1.10例题解析2668.1.3无向图的边连通性38262最小割的求解8.14无向图顶点连通性和边连通性的6.3流量有上下界的网络的最大流和最小流.300联系3846.3.1流量有上下界的容量网络8.1.5有向图的连通性6.3.2流量有上下界的网络的最大流.30382无向图点连通性的求解及应用6.3.3流量有上下界的网络的最小流.3048.21关节点的求解6.34例题解析310322重连通分量的求解64最小费用最大流323顶点连通度的求解2目录83无向图边连通性的求解及应用40192.1欧拉公式440831割边的求解401922欧拉公式的应用4418.32边双连通分量的求解4059.3平面图的判定445833边连通度的求解41294图的着色问题44684有向图强连通性的求解及应用416941地图染色与四色猜想4468.41有向图强连通分量的求解算法416942图的着色447842有向图强连通分量的应用418943图着色的应用449第9章平面图及图的着色问题4379.44图着色求解算法及例题解析…..4509.1基本概念…437索引91.1平面图与非平面图437、图论术语索引91.2区域与边界、符号索引4599.1.3极大平面图与极小非平面图.…438、图论问题及算法索引….46914平面图的对偶图439附录本书例题和练习题目录…91.5关于平面图的一些定理439参考文献92欧拉公式及其应用440
- 2020-12-08下载
- 积分:1