This is a very discrete 'pixel based' approach. I wonder if it could be generalized into the continuous image space, and if that would improve results.
Kind of a meta question here but I'm so baffled by the apparent stupidity of that comment that I really have to ask myself, what are you trying to do by posting it. At worst you're trolling, at best you're simply displaying your ignorance of DP uses as being a kind of knowledge, that there aren't many applications.
I mean off the top of my head, matrix chain multiplication and database optimisation. But a simple look on a wiki page would have found you more <https://en.wikipedia.org/wiki/Dynamic_programming> and a simple web search would have found you even more. So why post?
I would wager that over the last several decades
BLAST (basic local alignment search tool)
has done more to advance our knowledge of biology than any other algorithm.
BLAST isn't a dynamic programming algorithm. It's not guaranteed to find an optimal solution, unlike a DP algorithm. It has some elements of DP, but that's it.
"The heart of many well-known programs is a dynamic programming algorithm, or a fast approximation of one, including sequence database search programs like BLAST..."
All DP algorithms guarantee an optimal result. It's a defining characteristic of DP. BLAST doesn't. I'm really surprised that you're attempting to debate this.
I'm clearly not going to understand your motivation so I think I'll stop here.
(edit: There is absolutely nothing stopping heuristics and DP being combined; in fact they have to be in eg. database optimisation. A pure DP solution to query optimisation will be optimal, but will take unbounded (lthough finite) time, which is unacceptable. DP and heuristics are combined to both guide the DP search and bound it after a strict time (usually a couple of seconds CPU) by when it is hopefully 'good enough').
You're wrong, and I don't know why you're being stubborn about this. HDP is a different class of algorithms that uses DP, but it is not DP. A basic read of wikipedia of dynamic programming reveals the key pieces of DP:
There are two key attributes that a problem must have in order for dynamic programming to be applicable: optimal substructure and overlapping sub-problems. ... Optimal substructure means that the solution to a given optimization problem can be obtained by the combination of optimal solutions to its sub-problems.
Well, perhaps you use different definitions than I do, but it should be obvious that it is possible to design an algorithm using dynamic programming that does not solve the problem optimally. By optimally here, I mean always output the optimal solution.
If you, by optimization mean that there's a function value you are maximizing or minimizing, than that's not true either, since Subset Sum and Hamiltonian path are canonical decision problems for which DP is used.
Heck, you can even take the standard TSP DP algorithm and, instead of looking at all possible "exit vertices" in linear time, look at a randomly chosen constant number of candidates, thereby reducing the running time by a factor n and getting a randomized heuristic function not guaranteed to give the optimal value.
Technically if you car is recent, it is a cell phone with wheels but I digress.
This reminds me of biologists bickering about what is or is not a gene,
and endless snorefests of ontologists bickering about the semantics of a label on an edge in a graph.
There aren't many useful applications. People who think otherwise are on par with delusional interviewers that feel compelled to ask problems with DP solutions. The vast majority of us will go our entire careers without needing to solve the Towers of Hanoi or the Egg Drop Puzzle.
I cut almost a minute off of our startup time by removing a recursive nightmare one of my coworkers inflicted on some code I wrote by replacing the whole thing with DP.
But you’d have to look pretty close to see that’s what I did because unlike him I’m not obsessed with people thinking I’m clever. I’d rather be seen as wise.
(I started fixing it because we had found a couple mystery bugs caused by his solution not being reentrant. By the time I had full code branch coverage, it was actually six separate bugs I fixed)
Real-world dynamic programming: https://news.ycombinator.com/item?id=20285242 (66 comments)
Parallel seam carving: https://news.ycombinator.com/item?id=24117330 (37 comments)
Seam carving (2020) [video] https://news.ycombinator.com/item?id=26844121 (35 comments)
Seam carving (Wikipedia) https://news.ycombinator.com/item?id=21192868 (11 comments)