Given a weighted, undirected graph $G = (V,E)$, how can I compute the average weight of edges?
It seems an easy problem (divide the total weight to the number of edges!)
but I couldn't manage to find the sum of the edge weights since each
edge can be counted several times while iterating through the vertices.
$\begingroup$
$\endgroup$
0
Add a comment
|
2 Answers
$\begingroup$
$\endgroup$
If $w(i,j)$ is the weight of edge $ij$ then:
$avg = \frac{1}{2|E|}\sum_{i\neq j}w(i,j)$.
Why $2E$ ? Because when traversing vertices you will calculate both edges $ij$ and $ji$. Since it's the same edge, you are adding its weight twice, so you need to remove this redundancy by dividing by 2.
$\begingroup$
$\endgroup$
Alternatively, without dividing by $2$, I would write:
$avg = \frac{1}{|E|} \sum_{i} \sum_{j<i} w(i,j)$
as two for
loops in code.