Talk:Adjacency list

Untitled
The link to "Incidence Lists" takes you to the same page as "Adjacency Lists". http://en.wikipedia.org/wiki/Incidence_list

The article makes the claim: " Besides the space tradeoff, the different data structures also facilitate different operations. It's easy to find all vertices adjacent to a given vertex in an adjacency list representation; you simply read its adjacency list. With an adjacency matrix you must instead scan over an entire row, taking O(n) time. If you, instead, want to know if two given vertices have an edge between them, this can be determined at once with an adjacency matrix, while requiring time proportional to the minimum degree of the vertices with the adjacency list. "

But this is not shown to be true by Designing Fast Graph Data Structures: An Experimental Approach http://citeseer.ist.psu.edu/358648.html In this paper it is shown that a bit packed adjacency matrix is the most proforment data structure. This section should be updated to reflect this. —Preceding unsigned comment added by Wikiwikimoore (talk • contribs) 21:48, 19 December 2007 (UTC)

Regarding " If you, instead, want to know if two given vertices have an edge between them, this can be determined at once with an adjacency matrix, while requiring time proportional to the minimum degree of the vertices with the adjacency list. " I don't understand the second half of this statement, and would appreciate a citation or clarification. One might index an adjacency list to achieve O(1) or O(log N) lookup performance, where N is the total number of edges. It would take longer than a simple matrix lookup, but it need not be linear in anything.


 * If you pack the bits in an adjacency matrix or index the edges in an adjacency list, you don't have an adjacency matrix or an adjacency list any more, you have something else. It doesn't contradict what's written here if that something else turns out to have different performance than the structures that are actually discussed here. —David Eppstein (talk) 05:47, 27 October 2011 (UTC)

Shouldn't the analyzed time of the operations be in terms of V and E (vertices and edges) in the graph? For example, looking at all the adjacent vertices to a vertex in an adjacency matrix is O(V). Either way, I don't think N as used in the article currently is defined anywhere.


 * 2016-08-02: It seems the "trade-offs" section only consider dense matrices? If so, this should be noted, as parts in this section are likely not true in comparison with sparse matrices. — Preceding unsigned comment added by 193.175.53.21 (talk) 13:34, 2 August 2016 (UTC)

The chapter "Trade-Offs" and "Data Structures" are largely redundant and should be combined into one chapter, IMHO. 84.245.149.53 (talk) 08:23, 19 April 2018 (UTC)

Edge List should be separate article?
Seems to me adjacency list is the "array-of-pointers" data structure while edge list is simply an array of all the edges.

See https://courses.cs.washington.edu/courses/csep521/99sp/lectures/lecture01/sld029.htm https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/a/representing-graphs

Wqwt (talk) 16:22, 7 October 2019 (UTC)

I have created a new article Edge list. Wqwt (talk) 16:24, 16 October 2019 (UTC)

Wrong image
This new image (https://en.wikipedia.org/wiki/File:Adjacency_List_variation_one.png) is wrong. Node w is missing edge f, node v is missing edge e. — Preceding unsigned comment added by 174.112.85.42 (talk • contribs) 20:02, 28 August 2021 (UTC)
 * I agree. Also its caption was incoherent. I have removed it. —David Eppstein (talk) 20:06, 28 August 2021 (UTC)