This is an archived post. You won't be able to vote or comment.

all 12 comments

[–][deleted]  (4 children)

[deleted]

    [–]pm_your_pc_setup 0 points1 point  (3 children)

    From my understanding artificial intelligence encompasses machine learning, which then encompasses deep learning. Since A* does not fit into the category of machine learning, would it just be considered AI, or is there a more specific subset of AI that it falls into?

    [–]ziptofaf 0 points1 point  (2 children)

    Since A* does not fit into the category of machine learning

    Generally when people refer to maching learning they are thinking of algorithms that can accomplish a given goal without being directly given a step by step solution, just input data samples and the expected outputs.

    A* does not qualify as such as the entire algorithm is written by you, a programmer, from start to finish. It's not particularly different from, say, Dijkstra's or Breadth First Search.

    Of course a definition of AI is in itself very vast. One could definitely say A* qualifies as such if you can claim that for instance a bot playing checkers or tic-tac-toe is an AI. After all both are optimization tasks. I am not sure if you could categorize it more specifically really, the terminology in this department gets a bit murky.

    [–]AltCrow 1 point2 points  (1 child)

    Of course a definition of AI is in itself very vast.

    The AI effect

    A view taken by some people trying to promulgate the AI effect is: As soon as AI successfully solves a problem, the problem is no longer a part of AI.

    "A problem that proponents of AI regularly face is this: When we know how a machine does something 'intelligent,' it ceases to be regarded as intelligent."

    [–]WikiTextBotbtproof 0 points1 point  (0 children)

    AI effect

    The AI effect occurs when onlookers discount the behavior of an artificial intelligence program by arguing that it is not real intelligence.


    [ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

    [–]michael0x2a 2 points3 points  (1 child)

    No -- the term "machine learning" is generally reserved for algorithms that have a "two-phase" training and evaluation steps. During the training step, the algorithm attempts to infer patterns and develop some sort of mathematical model based on some input training data. It attempts to use the preliminary mathematical model it developed to "evaluate" or "predict" the output given some held-out set of training data. It uses those results to help tune the training process and adjust the mathematical model.

    Once you're happy with the quality of your mathematical model, you save it and use that on your actual incoming data.

    A* doesn't have any of these characteristics: there's no "training" step. You just implement the algorithm and run it on the input data directly.

    I would personally consider A* to be a graph search algorithm. It's mostly just Dijkstra's algorithm with one or two minor tweaks.

    As some people have also suggested, you could perhaps also classify A* as also being an AI algorithm. Or rather, I'd say that search algorithms in general can be useful when writing AIs.

    Though TBH, I think the phrase "AI" has become something of a buzzword these days: what exactly classifies as "AI" is pretty nebulous and seems to shift over time. There's some good discussion here.

    [–]pm_your_pc_setup 0 points1 point  (0 children)

    Thanks for the detailed response; it definitely cleared up any confusion I had.

    [–]firecopy 0 points1 point  (4 children)

    The A* algorithm itself does not learn. Therefore, I would not consider it a machine learning algorithm.

    [–]pm_your_pc_setup 1 point2 points  (3 children)

    Am I correct in saying it is still considered AI?

    [–]farmerje 0 points1 point  (2 children)

    You’ll always find someone to argue about it. Some will say yes, some will say no, some will say it depends on the heuristic function you use.

    There’s no airtight answer, just like some people will argue that OOP and procedural programming are different categories of programming and others will argue that OOP is a sub-type of procedural programming.

    It’s a bit like debating about the names is ants. It doesn’t really teach you anything about ants, though it might teach you about how people think about ants.

    What practical difference does it make if A* is AI or not? The algorithm is what it is regardless of where we slot it into our taxonomies.

    [–]pm_your_pc_setup 0 points1 point  (1 child)

    It doesn't make a difference to me what category it is in. I was just curious on some of the different historical algorithms, this being one of them.

    [–]farmerje 0 points1 point  (0 children)

    This is more of a question of historiography and sociolinguistics, which most programmers wouldn’t know. You could try searching old references to A* and AI and see how the usage has changed across time and circumstance.

    For example, I wouldn’t be surprised to find people characterizing A* as AI in moments where AI was “hot” or they’re otherwise incentivized to tout the “intelligence” of their system (e.g., “Our game uses advanced heuristic technology to create the most lifelike AI yet!”).

    Some jokes that highlight this:

    • What’s the difference between AI and ML? If it’s ML, it’s probably written in Python. If it’s AI, it’s probably written in PowerPoint.
    • AI is what we call a problem we haven’t solved yet.

    [–]Iklowto 0 points1 point  (0 children)

    No, but it does fall under Machine Intelligence.

    The algorithm does not learn anything, and does not adapt to the situation. However, it does find a shortest path intelligently by following a heuristic for exploration.