Skip to content

Comment on CMU Researchers Break Speed Barrier In Solving Important Class of Linear Systems

Comments

The article mentions a few fairly vague examples of what this type of algorithm is used for. To all of you non-neophytes, what are some specific implementations of this algorithm and where are they used?

If you write the equations describing the flows in a mass-conserving system, you can end up with a symmetric diagonally-dominant system.

As you might expect, there's a physical interpretation.

Diagonal dominance basically means that the diagonal entry of each row of the matrix is at least as big (in magnitude) as the sum of the off-diagonal entries.

Suppose the diagonal entry gives the rate of change of flow (say of a fluid, or of electric charge) into some physical location as you change some other property of that location (like its pressure, or voltage). Then the off-diagonals in the same column reflect the rates of change of flows to other locations as you change its pressure. And the off-diagonals on the same row reflect the rates of change of flows out of that location as you change the pressures in other locations.

If the flows are driven by pressure or voltage differences-- which is often the case, especially when you've linearized the system mathematically-- you get symmetry (because adding 1 volt to node A has the same effect on the A-to-B flow as subtracting 1 volt from node B).

If the system conserves mass (or electric charge or whatever), then the diagonals must at least add up to off-diagonals (in magnitude).

So then all you need is a connection to an outside node of known pressure or voltage (like ground), that doesn't change and hence doesn't contribute to the off-diagonals. That kicks one node over into having a diagonal entry greater than its off-diagonals, and then you have a nonsingular matrix and you can apply the algorithm.

Disclaimer-- it's been a while since I worked on this, so I probably messed up at least one of the directions or row-wise vs. column-wise relationships.

And it's also worth saying that diagonal dominance is a stronger property than positive definiteness. That is, something can easily be PD but not DD.

Let's say you're manufacturing a product with thousands of individual components, each of which has a different cost, a different lead time, a different shelf life, and so on. These thousands of components are made into hundreds of sub assemblies, then tens, then are finally assembled and you have your product. You can crunch all of that and answer questions such as, in what order should we do this? How much of each component should we keep in stock? How does the rate at which we work affect the final cost? Would it actually be cheaper per unit to open another assembly line? And so on.

Please elaborate. Solving linear equations with software is nothing new, this algorithm just does it faster. So I'd like to see prior art for what you're describing here, sounds interesting. How exactly would one apply linear algebra to solving the first and third questions for example?

Back in college a few years ago, we mostly used Simplex and other tableau-pivot based algorithms for solving large linear programming problems. Link to wikipedia article on the Simplex algorithm http://en.wikipedia.org/wiki/Simplex_algorithm

For most problems that individuals face each day, linear programs are fairly simple to model and solve. However, there are lots of complex problems that are solved each day.

A few examples of large-scale linear programming problems: - For Amazon.com: what quantity of each item should be stocked at each warehouse each day to minimize inventory while also optimizing for shipping time and cost to demand nodes (customers). - For an airline: how to plan and schedule flights to all domestic and international airports to maximize profit - In shipping logistics: how to allocate trucks and set routes to minimize fuel cost while satisfying delivery time.

For complex systems, you can easily run up a linear program with millions of independent variables (producing millions of rows in the linear system).

Solving a linear system of equations is not the same as solving a linear program. The article is about the former, not the latter. Linear programming is an optimization problem, subject to constraints that are described by inequalities. Linear systems of equations are finding values of relationships defined by equalities. There are lots of matrix multiplications involved in both, but other than that the solutions don't really resemble each other. For example, Linear Programming is not even known to be solvable in strongly polynomial time (simplex is exponential in the worst case, and the best method is weakly polynomial), while the algorithm in the paper improves from one strongly polynomial result ot another.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.