【圖論】 Graph.jl 概覽

文章目錄

  • 安裝
  • 基礎使用
    • 基本操作
    • 全局圖的指標
    • 頂點性質
    • 邊性質
  • 讀寫圖
    • 按照 .lgz 格式存儲圖數據(壓縮格式)
    • 按照 .lg 格式存儲圖數據(非壓縮格式)
  • 圖的繪制
    • TikzGraphs.jl Latex 論文風格
    • GraphPlot.jl 通常與 Compose.jl 一起使用
    • SGtSNEpi.jl 擅長畫 2維,3維稀疏圖
    • GraphRecipes.jl 基于 Plots.jl 的包, 功能較為基礎。
    • GraphMakie.jl 擅長繪制2維,3維空間中的圖,交互性更強。
    • Karnak.jl 主要擅長繪制 2維圖, 且參數設置豐富。

參考鏈接
https://juliagraphs.org/Graphs.jl/stable/

圖論是數學,計算機等學科常見的課程設置。由于 Julia 語言運算速度高效的原因, 其第三方包的非常豐富且社區活躍。無論是指標計算,還是算法設計都有廣泛的生態。
Graph.jl 是最為基礎的圖論包。可以與 Python語言 的 NetworkX 包類比。

安裝

using Pkg
Pkg.add("Graphs")
Pkg.add("Karnak")

基礎使用

using Graphs  調用圖論包
using Karnak  調用圖論繪圖包
g=path_graph(6)  # 生成無向簡單圖,權重為整數
println(nv(g))  # 圖的頂點數
println(ne(g)) # 圖的邊數
@drawsvg beginbackground("grey10")sethue("orange")drawgraph(g,vertexlabels = [1, 2, 3, 4,5,6])

在這里插入圖片描述

using Graphs  # 調用圖論包
using Karnak  # 調用圖論繪圖包
g=path_graph(6)  # 生成無向簡單圖,權重為整數
add_edge!(g, 2, 4) # 添加邊
@drawsvg begin
background("grey10")
sethue("skyblue")
drawgraph(g,vertexshapesizes = [20, 20, 20, 20, 20, 20],vertexlabelfontsizes = 10,vertexlabels =["a","b","c","d","e","f"])
end 600 300

在這里插入圖片描述

基本操作

代碼含義
add_vertex!(g)向圖g添加1個頂點
add_vertices!(g, n)向圖g添加 n 個頂點
add_edge!(g, s, d)將邊 (s, d) 添加到圖 g
rem_vertex!(g, v)將頂點 v 從圖 g移除
rem_edge!(g, s, d)將邊 (s, d) 從 g 移除

全局圖的指標

代碼含義
nv(g)g的頂點數
ne(g)g變數
vertices(g)圖 g 包含的所有頂點
edges(g)圖 g 包含的所有邊
has_vertex(g, v)驗證頂點 v 是否在 g 中
has_edge(g, s, d)驗證邊 (s,d) 是否在 g 中
has_self_loops(g)驗證圖 g 的所有自回路(圈)
is_directed(g)驗證圖g是否有向圖
eltype(g)驗證 g 所有頂點的類型

頂點性質

代碼含義
neighbors(g, v)返回點 v 的鄰域, (若有向圖返回所有外鄰域)
all_neighbors返回點 v 的鄰域(若有向圖返回所有外鄰域和內鄰域)

邊性質

代碼含義
src(e)給出邊 (s,d) 的起點
dst(e)給出邊 (s,d) 的終點
reverse(e)添加新邊在 (s,d) 基礎上添加 (d,s)

讀寫圖

按照 .lgz 格式存儲圖數據(壓縮格式)

using Graphs  # 調用圖論包
g=path_graph(6)  # 生成無向簡單圖,權重為整數
savegraph("mygraph.lgz", g) # 保存
reloaded_g = loadgraph("mygraph.lgz")  # 讀取

按照 .lg 格式存儲圖數據(非壓縮格式)

using Graphs  
g=path_graph(6)  
savegraph("mygraph.lg", g)
reloaded_g = loadgraph("mygraph.lgz")

更多格式的讀取與存儲需要 GraphIO.jl

圖的繪制

常見包

TikzGraphs.jl Latex 論文風格

在這里插入圖片描述

GraphPlot.jl 通常與 Compose.jl 一起使用

SGtSNEpi.jl 擅長畫 2維,3維稀疏圖

在這里插入圖片描述
在這里插入圖片描述

GraphRecipes.jl 基于 Plots.jl 的包, 功能較為基礎。

在這里插入圖片描述

GraphMakie.jl 擅長繪制2維,3維空間中的圖,交互性更強。

在這里插入圖片描述

Karnak.jl 主要擅長繪制 2維圖, 且參數設置豐富。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920759.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920759.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920759.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[java] 控制三個線程按順序交替輸出數字123123…

控制三個線程按順序交替輸出數字123123… synchronized(配合專用鎖對象) 通過共享鎖和 volatile 變量控制執行順序,每個線程按指定順序打印指定內容,確保輸出序列如 “123123…”。使用 synchronized 和 wait/notifyAll 實現線程間…

[C#]winform基于yolov8-seg實現的指甲分割實現源碼

【測試環境】 vs2019 net framework4.7.2 onnxruntime1.16.3 opencvsharp 注意源碼運行在CPU上不支持GPU運行,由于net framework限制GPU會很慢因此沒有GPU版本提供。 【運行步驟】 打開sln項目 選擇x64 debug運行即可 如需要再x64 release運行可以將x64 debu…

數據結構——線性表(鏈表,力扣中等篇,增刪查改)

文章目錄一、增刪查改1.1增(插入節點)1.1.1兩數后插入公約數1.1.2循環有序鏈表的插入1.2刪(移除節點)1.2.1刪除已知的node節點【交換val值】1.2.2移除數組中已存在的節點【unordered_set】1.2.3刪除和為0的節點【前綴和】1.3改&am…

【Android】OkHttp發起GET請求 POST請求

三三要成為安卓糕手 一:OkHttp介紹 OkHttp 是一個開源的、強大且高效的 HTTP 客戶端庫,主要用于在 Java后端和Android 項目中進行網絡請求。 //在gradle中添加依賴 com.squareup.okhttp3:okhttp:4.12.0二:GET請求/*** 使用OkHttp發起get請求*…

[Mysql數據庫] 知識點總結8

1. 請詳細描述在復制拓撲中參與復制的線程類型以及各自所承擔的功能。答:當從屬服務器連接到主服務器時,在主服務器上會創建 Binlog 轉儲線程,在從屬服務器上會默 認創建 I/O 線程和 SQL 線程。- Binlog 轉儲線程用于從二進制日志讀取事件并將…

250829-Gitlab數據備份與恢復

下面給你一份可落地的遷移方案,保證 GitLab 的數據和配置完整遷移到服務器 B。你當前用的是 GitLab Omnibus(docker 版),數據都在你映射的 3 個目錄里(/etc/gitlab, /var/log/gitlab, /var/opt/gitlab)&…

吳恩達機器學習作業十一:異常檢測

數據集在作業一異常檢測異常檢測就是發現與大部分對象不同的對象,其實就是發現離群點。異常檢測有時也稱偏差檢測。異常對象是相對罕見的。用數據集建立概率模型p ( x ),如果新的測試數據在這個模型上小于某個閾值,則說它極大可能為異常點算法…

2000w 的數據量,mysql要進行幾次IO操作,為什么

在 MySQL 中,2000 萬數據量的表在進行查詢時所需的 ??IO 操作次數??主要取決于 ??索引結構(B樹層級)??、??查詢類型??和 ??數據分布特征??。以下是具體分析:一、B樹層級與 IO 次數的關系InnoDB 引擎通過 B樹索引管…

【代碼隨想錄day 22】 力扣 39. 組合總和

視頻講解:https://www.bilibili.com/video/BV1KT4y1M7HJ/?vd_sourcea935eaede74a204ec74fd041b917810c 文檔講解:https://programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html#%E6%80%9D%E8%B7%AF 力扣題目:https://leetcod…

DrissionPage 實戰:動態 IP 代理與百度翻譯 API 數據抓取

本文將詳細介紹如何使用 DrissionPage 實現動態 IP 代理訪問,并結合百度翻譯 API 進行數據抓取與處理。一、技術選型與架構設計1.1 為什么選擇 DrissionPage?DrissionPage 作為新一代網絡自動化工具,相比傳統 Selenium Requests 方案具有顯著…

策略模式:靈活應對算法動態切換

引言 在軟件開發中,我們常常會遇到需要在運行時動態選擇和切換算法或行為的場景。例如,電商系統中的多種支付方式、游戲中的不同難度設置,或是計算器中的各種運算符。傳統的方法可能會使用復雜的條件判斷語句(如if-else或switch-c…

【C++ 】string類:深拷貝與淺拷貝解析

【C 】string類操作全解析-CSDN博客 1.stirng類的模擬實現 1.1 經典的string類問題 上面已經對string類進行了簡單的介紹,大家只要能夠正常使用即可。在面試中,面試官總喜歡要求自己來模擬實現string類,最主要是實現string類的構造、拷貝…

Decoder 解碼器

Decoder 解碼器&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>#include <libavformat/avformat.h> #include <libavcodec/avcodec.h> #include <libswscale/swscale.h>#define WORD uint16_t #define DWORD ui…

globals() 小技巧

scheduler_class globals()[scheduler_class_name] Python 中一種 動態獲取類對象 的常用技巧&#xff0c;屬于 反射&#xff08;reflection&#xff09; 編程的范疇globals()Python 內置函數&#xff0c;返回一個 字典&#xff08;dict&#xff09;&#xff0c;包含當前模塊&…

Android Studio 9.png制作

一、新建 二、把要做的圖png導入進去 png圖片建議 根據內容預留1像素可拉伸區域 eg:純色或可漸變底色 三、右邊創建.9.png 四、雙擊打開 1、繪制黑邊 參考視頻 2、縮放到800% ,移至右下 3、在下面和右邊繪制整根黑線 4、根據png 位置左側和上側黑線 4.1 分析 紅色方框為…

【百度】C++開發(25屆提前批 一面)面經

文章目錄1. 代碼實現&#xff1a;說說LRU&#xff0c;并代碼實現LRU為什么使用哈希表&#xff1f;&#xff08;有兩個原因&#xff09;1. 僅用雙向鏈表的缺陷2. 引入哈希表的作用1. 快速查找&#xff1a;2. 快速插入與刪除&#xff1a;雙向鏈表 哈希表的協作過程舉例說明代碼實…

Word文檔怎么打印?Word打印技巧?【圖文詳解】單面/雙面/指定頁面/逆序等Word打印選項

一、問題背景 在日常辦公、學習場景中&#xff0c;Word文檔作為常用的文字處理載體&#xff0c;經常需要將電子內容轉化為紙質版本&#xff0c;比如提交報告、打印學習資料、整理文檔存檔等。 但不少用戶在嘗試打印Word文檔時&#xff0c;常會遇到各種阻礙&#xff1a;有的不清…

漫談《數字圖像處理》之基函數與基圖像

在數字圖像處理領域&#xff0c;基函數與基圖像是貫穿理論分析與實際應用的核心概念 —— 它們如同 “樂高積木”&#xff0c;將復雜的圖像信號拆解為可解釋、可操作的基本單元&#xff0c;支撐起壓縮、去噪、特征提取等一系列關鍵任務。從傳統的傅里葉變換到前沿的因子場理論&…

打開多個Excel文件后快速關閉所有的文檔,并且退出Excel應用

打開多個Excel文件后如果要快速關閉所有的文檔&#xff0c;并且退出Excel應用&#xff0c;可以按住Shift鍵右上角的號&#xff08;關閉按鈕&#xff09;。Word和PowerPoint也是一樣的操作。如果有文檔修改后沒有保存&#xff0c;會提示是否保存。作為補充&#xff0c;先來看看兩…

基于 PyTorch 構建 Dataset 與 DataLoader:從 TXT 文件讀取到新增類別全流程指南

基于 PyTorch 構建 Dataset 與 DataLoader&#xff1a;從 TXT 文件讀取到新增類別全流程指南在深度學習計算機視覺任務中&#xff0c;數據加載與預處理是模型訓練的基礎環節&#xff0c;直接影響模型的訓練效率與最終性能。PyTorch 作為主流深度學習框架&#xff0c;提供了Data…