定義
數據結構中對於稀疏圖的定義為:有很少條邊或弧(邊的條數|E|遠小於|V|²)的圖稱為稀疏圖(sparse graph),反之邊的條數|E|接近|V|²,稱為稠密圖(dense graph)。此定義來自百度百科,實際上是一種朴素的理解,簡單來說邊越多,圖就越稠密
判斷稀疏圖與稠密圖
這個判斷方式沒有絕對的標准,可以依據定義來判斷,比如邊的條數|E|很接近|V|²,那么毫無疑問是個稠密圖,但是寫算法時經常要根據數據的特點選擇使用鄰接矩陣還是鄰接表,所以我們可以從使用算法的復雜度出發,比如對於Dijkstra算法,朴素Dijkstra時間復雜度是n²,而堆優化Dijkstra時間復雜度mlogn,其中m是邊的個數,所以單從算法效率上講,稀疏圖與稠密圖的分界點大概就在m=n²/logn處,但是實際上復雜度是有系數的,所以單從式子上計算也是不太科學的,可以作為一個參考。
現在主要的說法是以m=nlogn作為區別稀疏圖與稠密圖的標准,實際上這個說法也不是很准確,但是考慮到實際場景中的數據,我們構造的圖的邊大多數時候是很顯然遠大於nlogn或者遠小於nlogn的,所以用這個方式判斷也是合理的。
但是對於特定構造的情況,尤其是一些算法題目中,可能要結合實際實現算法的復雜度與系數進行比較,選擇鄰接矩陣還是鄰接表來求解。
————————————————
版權聲明:本文為CSDN博主「負壹」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41685265/article/details/106828842