Because of its inherent simplicity, graph theory has a wide range of applications in engineering and in physical sciences. It also has uses in social sciences, in linguistics and in numerous other areas. In fact, a graph can be used to represent almost any physical situation, involving discrete objects and the relationship among them. Now with the solutions to engineering and other problems becoming fairly complex leading to larger graphs, it is virtually becoming difficult to analyze problems without the use of computers. This well established classic textbook provides a rigorous yet informal treatment of graph theory with an increased emphasis on computa- tional aspects of graph theory and graph-theoretic algorithms. Numerous applications to actual engineering problems are incorporated with software design and optimization topics.