abstract algebra adjacency matrix algorithm bipartite graph cambridge university press cayley graph combinatorics computational complexity theory computer network computer science cryptography directed graph expander mixing lemma expander walk sampling extractor graph theory hash function linear algebra multigraph pcp theorem pseudorandom generator ramanujan graph random graph regular graph sorting network spectral gap spectral theorem symmetric matrix theoretical computer science