A method for optimizing a communication network configuration comprising: identifying, using at least one processor, a plurality of arc paths and a plurality of nodes of a potential extension of an existing communication network sufficient to connect at least one potential customer location to the existing communication network, the at least one potential customer location associated with a value for connecting the at least one potential customer location to the existing communication network, the existing communication network comprising at least a first node and a second node interconnected by at least one existing communication path; executing, using the at least one processor, a linear programming application to optimize a summation of the value of connecting each of the at least one potential customer locations less a cost of connecting each of the at least one potential customer locations using a combination of the plurality of arc paths beginning at the first node of the existing communication network and ending at the second node of the existing communication network, the value of connecting each of the at least one potential customer locations being related to the net present value that would be received if the at least one potential customer location is connected, the linear programming application receiving as inputs at least one parameter, at least one variable, and a plurality of constraints including at least one connectivity constraint, at least one saturation constraint, at least one service constraint, and distance constraints, the saturation constraint specifying that no more than one communication path may be assigned along each of the plurality of arc paths and the distance constraints comprising a first distance constraint setting a distance value for each node in the existing communication network to zero and a second distance constraint setting a distance value for each node along the combination of arc paths between the first node and the second node to sequentially increasing distance values such that the combination of arc paths do not form an isolated loop; and delivering using the at least one processor a solution including at least one path from the first node to the at least one potential location and to the second node. identifying, using at least one processor, a plurality of arc paths and a plurality of nodes of a potential extension of an existing communication network sufficient to connect at least one potential customer location to the existing communication network, the at least one potential customer location associated with a value for connecting the at least one potential customer location to the existing communication network, the existing communication network comprising at least a first node and a second node interconnected by at least one existing communication path; executing, using the at least one processor, a linear programming application to optimize a summation of the value of connecting each of the at least one potential customer locations less a cost of connecting each of the at least one potential customer locations using a combination of the plurality of arc paths beginning at the first node of the existing communication network and ending at the second node of the existing communication network, the value of connecting each of the at least one potential customer locations being related to the net present value that would be received if the at least one potential customer location is connected, the linear programming application receiving as inputs at least one parameter, at least one variable, and a plurality of constraints including at least one connectivity constraint, at least one saturation constraint, at least one service constraint, and distance constraints, the saturation constraint specifying that no more than one communication path may be assigned along each of the plurality of arc paths and the distance constraints comprising a first distance constraint setting a distance value for each node in the existing communication network to zero and a second distance constraint setting a distance value for each node along the combination of arc paths between the first node and the second node to sequentially increasing distance values such that the combination of arc paths do not form an isolated loop; and delivering using the at least one processor a solution including at least one path from the first node to the at least one potential location and to the second node.