日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

guava中 graphs 六

發(fā)布時(shí)間:2025/6/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 guava中 graphs 六 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

guava中 graphs 六

?

介紹

guava的common.graph 是一個(gè)圖類型結(jié)構(gòu)的庫,也就是實(shí)體和他們之間的關(guān)系的工具類庫

?

比如包含網(wǎng)頁和超鏈接,科學(xué)家和他們的論文,航站和他們之間的通道,人們和他們呢之間的家族關(guān)系。目的是提供

一個(gè)共同的和可以擴(kuò)展的語言能夠使用這些數(shù)據(jù)。

?

定義

圖包含了點(diǎn)的集合和邊的集合(也叫連接),每個(gè)邊連接使得節(jié)點(diǎn)能夠相互連接,邊進(jìn)入的節(jié)點(diǎn)叫做端點(diǎn)

?

一個(gè)邊是有方向的如果定義了一個(gè)起點(diǎn)和一個(gè)結(jié)束點(diǎn),有方向的邊適合不對(duì)稱的結(jié)構(gòu)模型

無方向的邊適合有對(duì)稱關(guān)系的數(shù)據(jù)模型;

?

有向的圖它的邊是有向的,無向圖它的邊是無向的

?

例子

graph.addEdege(nodeU,ndeV,edgeUV)

?

nodeU和nodeV是相鄰的

edgeUV 是附屬于節(jié)點(diǎn)nodeU和nodeV

?

如果一個(gè)圖是有向的,那么

nodeU是nodeV的前邊的節(jié)點(diǎn)

nodeV是nodeU后面的節(jié)點(diǎn)

edgeUV是nodeU的向外的出去邊

edgeUV是nodeV的進(jìn)入的邊

nodeU是 edgeUV的起始邊

nodeV是edgeUV的終止邊

如何一個(gè)圖是無向圖,那么

nodeU既是nodeV的前驅(qū)后繼

nodeV是nodeU的前驅(qū)后繼

edgeUV是nodeU的出邊也是入邊

edgeUV是nodeV的出邊和入邊

?

?

這些都是關(guān)于一個(gè)圖

循環(huán)圖是圖的起點(diǎn)和終點(diǎn)都是同一個(gè)點(diǎn),如果是循環(huán)有向圖,他的出邊和入邊都是附屬節(jié)點(diǎn),附屬節(jié)點(diǎn)既是起點(diǎn)也是終點(diǎn)

兩個(gè)邊是平行的如果連接的是相同的點(diǎn),并且有相同的順序,反平行邊是有相同的節(jié)點(diǎn)但是是相反的順序

eg:

directedGraph.addEdge(nodeU,nodeV,edgeUV_a);

directedGraph.addEdge(nodeU,nodeV,edgeUV_b);

directedGraph.addEdge(nodeV,nodeU,edgeVU);

在directedGraph中edgeUV_a和edgeUV_b是平行的,和edgeVU是反平行的;

?

undirectedGraph.addEdge(nodeU,nodeV,edgeUV_a);

undirectedGraph.addEdge(nodeU,nodeV,edgeUV_b);

undirectedGraph.addEdge(nodeV,nodeU,edgeVU);

在undirectedGraph中edgeUV_a和edgeUV_b是平行的,edgeVU和其他兩個(gè)也是平行的

?

容量Capabilities

common.graph 關(guān)注提供接口方方法使得圖能夠簡單實(shí)用,不提供功能性如i/o和可視化,有很有限的工具

?

common.graph支持以下幾種類型:

有向圖

非有向圖

節(jié)點(diǎn)

循環(huán)圖

平行非平行邊

有序無序節(jié)點(diǎn)

?

Graph types

有三個(gè)最常用的圖接口,通過邊的不同來區(qū)分 Graph,ValueGraph,Network,他們是對(duì)等關(guān)系,之間不會(huì)有等級(jí)區(qū)分

這些接口都結(jié)成了 SuccessorFunction 和 PredecessorsFunction

這些接口被當(dāng)作訪問successors和predecessors方法的入?yún)?#xff0c;圖的使用者已經(jīng)有一個(gè)view,并不想去序列化view到common.graph,只是想在一個(gè)圖的算法中使用,這種場景就很實(shí)用

Graph

是一個(gè)最簡單和基礎(chǔ)的圖類型,定義了處理節(jié)點(diǎn)之間低頻地操作,如successors(node),adjacentNodes(node),

inDegree(node),它的節(jié)點(diǎn)是第一個(gè)類單獨(dú)的獨(dú)享,他們和map中的key類似。

圖graph的邊完全是匿名的,他們僅僅在端點(diǎn)定義

Graph<Airport> 這個(gè)圖中的邊表示連接兩個(gè)機(jī)場的一個(gè)航班

ValueGraph

ValueGraph 有所有Graph的方法,同時(shí)添加了找回特定邊值的方法

valueGraph的邊都有用戶初始化的特殊值,這些值不需要唯一,Graph和ValueGraph的關(guān)系與map和set的關(guān)系類似

graph的邊是節(jié)點(diǎn)對(duì)的集合,valuegraph的邊是短點(diǎn)和值的映射。

ValueGraph 提供了asGraph()方法返回Graph的view,能夠使用graph實(shí)例的方法

ValueGraph<Airport,Integer>這個(gè)值代表著往返兩個(gè)機(jī)場需要的時(shí)間

?

Network

Network有和Graph相關(guān)的所有方法,添加了邊和節(jié)點(diǎn)和邊之間的關(guān)系方法,如outEdges(node),incidentNodes(edge),edgesConnectiing(nodeU,nodeV)

network約束邊天然支持平行邊

network支持asGraph()方法返回Network的Graph view

Network<Airport,Flight> 這個(gè)network中的邊表示特定的班次從一個(gè)機(jī)場到另一個(gè)機(jī)場

?

?

選擇正確的圖類型

?

這三個(gè)類型的區(qū)別在于邊的表示不同

graph 類型 邊在節(jié)點(diǎn)之間沒有區(qū)別,沒有自己的數(shù)據(jù),每一個(gè)節(jié)點(diǎn)對(duì)之間最多通過一條邊連接

,邊也沒有其他任何信息

ValueGraph類型中的邊有值,值可以相同也可以不同,邊的值可以附有不同的權(quán)重

Network ,節(jié)點(diǎn)的對(duì)象是唯一存在的

?

創(chuàng)建graph實(shí)例 --使用構(gòu)造者的方式

例如

@Test

public void test01() {

MutableGraph<Integer> graph = GraphBuilder.undirected().build();

MutableValueGraph<City, Distance> roads = ValueGraphBuilder.directed().build();

MutableNetwork<Webpage, Link> webSnapshot = NetworkBuilder.directed()

.allowsParallelEdges(true)

.nodeOrder(ElementOrder.natural())

.expectedNodeCount(10000)

.expectedEdgeCount(1000000).build();

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

轉(zhuǎn)載于:https://my.oschina.net/iioschina/blog/2967581

總結(jié)

以上是生活随笔為你收集整理的guava中 graphs 六的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。