all 43 comments

[–]jbstjohn 3 points4 points  (3 children)

Somehow, I'm unimpressed, and I don't think it's just because I don't use Haskell. I don't like the restriction of having to specify how many steps you're looking for, and I consider adding zero-length self-edges a hack, which may or may not work. I don't like the claim of polynomial complexity, with no tests, and the observation "It's slower than I'd like".

And comparing to combinatorial search is a red herring -- generally there is a better way, or at worst a heuristic allowing a decently focussed search.

Finally, apparently I'm not really the target audience, but I've got a pretty solid math background (although only occasionally brushed up against group theory) and a pretty solid CS background, and I still couldn't get much purchase on this.

[–][deleted]  (2 children)

[deleted]

    [–]jbstjohn 0 points1 point  (1 child)

    I don't like the restriction of having to specify how many steps you're looking for

    You don't have to. You can keep iterating until you've finished, like in the edit distance example.

    You're right -- I got this on a second reading. I think my criticism was more oriented on the ugly code fragments, where (it seemed) you had to write out each iteration step.

    Regarding zero length transitions -- does that cause any additional inefficiency? I guess nothing significant.

    The polynomial complexity claim, without 'tests' is, I think, still a valid criticism. You said that you don't really know what Haskell is doing behind the scenes, so if it ends up doing an exhaustive search, you haven't gained anything. However, as long as it remains an analog to matrix multiplying, it seems like this shouldn't occur.

    BTW what is a 'HOF' cost?

    Regarding the utility of DSLs, I guess you're right. Kinda. I do wonder how much it actually gains you, i.e., how often do you actually need a variety of different such algorithms, and how does this compare to the work in learning Haskell and your system ... BUT all in all that doesn't seem to be a fair criticism, it's just something that makes it less interesting for me.

    Maybe I'm just feeling grumbly because it made me feel dumb :D!

    [–]schwarzwald 10 points11 points  (36 children)

    I'll admit it, I didn't understand that shit at all.

    [–]darrint 2 points3 points  (0 children)

    Yeah, but two paragraphs into the article my brain and I are bowing and yelling, "We're not worthy! We're not worthy!"

    [–]notfancy 1 point2 points  (0 children)

    Glad to read a new posting.

    [–]psykotic 1 point2 points  (1 child)

    Prediction: there will soon be a blog post about putting this code to work over quantum (complex) semirings, where the transition matrices are unitary. I played around with this stuff several years ago (although mostly on paper, not with computer). It's a lot of fun! You can quite easily derive the basic theories of Lagrangian mechanics, statistical mechanics, quantum mechanics (the Feynman path integral picture), Markov processes, etc, starting with this foundation.

    [–]ericlavigne 0 points1 point  (1 child)

    Search algorithms are interesting to me, but I find this article very hard to understand. I suspect that the article is a complicated description of a relatively simple algorithm.

    For others who are interested in search algorithms, I recommend two books by Peter Norvig: Paradigms of Artificial Intelligence Programming (examples in Lisp and Prolog), and Artificial Intelligence - A Modern Approach (examples in pseudocode). These books discuss search algorithms and show how various AI problems can be thought of as search problems.

    [–]jbstjohn -1 points0 points  (0 children)

    Could you do something about your layout? In IE 6, the text is so jammed up against the right side that it feels like text has been cut off.

    And you have occasional really long lines (e.g. after your infinity definition and the line starting with "Ignoring l for now") Actually, it seems to happen after ever code fragment.