ch8介紹算法:搜索:bfs/dfs;最小生成樹:最短路,網(wǎng)絡(luò)流,最小割;
ch9
屬性映射,樣例為dij算法的relax模板函數(shù),需訪問邊的權(quán)重和定點的距離屬性。get()接收distance或key對象并返回屬性值。我們通常使用頂點作為鍵值。at()返回指向該屬性的指針。property_traits類用于推導(dǎo)屬性映射相關(guān)聯(lián)的類型。鍵和值類型以及屬性映射類別(可讀寫?)。
內(nèi)部屬性
從圖中獲取d和w的方法如下
property_map<Graph, vertex_distance_t>::type d
= get(vertex_distance, g);
property_map<Graph, edge_weight_t>::type w
= get(edge_weight, g);
通常屬性包括distance,weight,color,頂點ID
調(diào)用方式可以說是非常費解了
dijkstra_shortest_paths(g, src,
distance_map(get(vertex_distance, g)).
weight_map(get(edge_weight, g)).
color_map(get(vertex_color, g)).
vertex_index_map(get(vertex_index, g)));
distance_map把vertex_distance映射到了一個數(shù)組里,用途的頂點指針作為數(shù)組的偏移量。其他三個也一樣,.使得它重新開始映射。
傳參方式//內(nèi)心是崩潰的,這他媽在ch22好嗎
不會直接用bgl_named_params類的,boost::weight_map這種格式會自動創(chuàng)建一個類似的
外部屬性
兩種方法,
第一種:使用適配器類:iterator_property_map;這個類裝飾一個隨機訪問的迭代器,創(chuàng)建一個屬性映射。迭代器指向?qū)崿F(xiàn)屬性值range的開始,range的長度是key對象的個數(shù)。
第二種:使用指針類型,當(dāng)鍵類型可以做指針偏移量時。
構(gòu)建自己的外部屬性映射最多意味著重載put,get,operator[],此外,新的屬性映射類將需要為property_traits中定義的所有類型嵌套typedef,也可以為新的屬性映射類型創(chuàng)建property_traits的特化。
。。。
ch12 BG的接口:直接閱讀即可
ch13屬性映射庫:首先我們都很了解它不屬于BGL。但是一直在用它啊
Boost屬性映射庫主要由概念形式的接口規(guī)范組成(類似于STL [2]中的迭代器概念)。 這些接口規(guī)范旨在由通用庫的實現(xiàn)者在向用戶傳達關(guān)于模板參數(shù)的要求時使用。 特別地,Boost屬性映射概念定義了將關(guān)鍵對象映射到對應(yīng)的值對象的通用接口,從而隱藏了如何從算法實現(xiàn)映射的細節(jié)。 實現(xiàn)屬性映射界面的類型取決于提供的算法的客戶端。 屬性映射要求有意義地模糊鍵和值對象的類型,以允許通用庫的函數(shù)模板中的最大的一致性。
干貨全都在最后:
ch15訪客概念
訪客概念在BGL中與functor在STL中扮演著相同的角色。 functor提供一種擴展算法的機制; 用于定制算法的每個步驟所做的工作。 訪問者允許用戶在圖形算法中在不同步驟插入自己的操作。 與STL算法不同,圖形算法通常具有多個事件點,其中可能需要通過functor插入回調(diào)。 因此,訪問者沒有像functor那樣的一個operator()方法,而是具有與各種事件點對應(yīng)的幾種方法。 每個算法都有一組不同的事件點,由以下訪問者概念描述:
剩下的沒什么難度了 自己查表
ch16事件游客列表適配器
EventVisitorList是EventVisitor或使用std :: pair組合的EventVisitors列表。 每個圖形算法定義了將EventVisitorList轉(zhuǎn)換為算法所需的特定類型的訪問者的訪問者適配器。 在下面的例子中,我們將展示如何使用std :: pair將事件訪問者組合到列表中,以及如何使用算法的訪問適配器類。
別看了意思很簡單就是把一堆visitor用pair 封裝成eventvisitorlist然后再封裝成visitor
ch17事件游客
前綴記錄:
前導(dǎo)邊記錄:
距離記錄:
屬性寫入:
屬性輸出:
別的不重要了、
18 圖類:
不看了 ndnSIM的全局拓撲圖全部采用NdnGlobalRouterGraph
自定義了一個無向圖類,保留了鄰接表的絕大多數(shù)入口。
public內(nèi)容有指向自ns3::ndn::GlobalRouter的指針Vertices和點&邊的屬性類型,構(gòu)造函數(shù)把node和channel的對象從vector取出來push_back到list類型的成員函數(shù)里...是的list可以push_back ,只是到結(jié)尾而已。。
哎呀懵了好久,list里面的內(nèi)容就是各種各樣的Vertice。。。而他只是globalrouter()的指針。實際存的是node和channel的list!! 至于這兩種類的對象是什么 見ns-3里他們各自的頭文件 。
以下部分 按需查閱。。。
19 圖適配器
20 迭代適配器
21 特征類
22 算法
23 圖的輸入輸出
24 概念
25 To do list
26 問題
27 當(dāng)前的BGL存在一些問題
28 FAQ