Content deleted Content added
No edit summary |
→Misleading Article: thanks and suggestion for article move Tag: Disambiguation links added |
||
(8 intermediate revisions by 7 users not shown) | |||
Line 1:
{{
{{WikiProject Mathematics|priority=Mid}}
}}
==Untitled==
Line 146 ⟶ 148:
:::It's exactly the opposite: a nondeterministic algorithm leaves choices open, it ''refrains'' from making them. Or in the context of nondeterministic acceptance, you could say: it makes ''all'' of them. What it doesn't do is make choices, i.e. choose between multiple options by picking one and not picking the rest. [[User:Rp|Rp]] ([[User talk:Rp|talk]]) 21:43, 1 June 2021 (UTC)
::::I wouldn't say "exactly" the opposite, but you're right. I didn't word that carefully enough. My point was that however it is defined, it is important to also explain what you mean by "choice".[[User:02Tails|02Tails]] ([[User talk:02Tails|talk]]) 23:52, 26 July 2021 (UTC)
*The biggest problem is that the hatnote promises that the article is about meaning B (as defined in [[#Requested move 22 October 2019]]), but that is only true of the lead, and the rest of the article is about meaning A. I am adding a "Confusing" template to warn readers of the article.
*One solution would be to split this article. The two articles would need different names. I suspect that "nondeterministic algorithm" is more appropriate for meaning A. Partly because Floyd (1967) uses it with meaning A, but also because "nondeterminism" with meaning B is only desirable in special cases with more specific names such as [[randomized algorithm]].
*An alternative solution is to merge the material into other articles. There are a lot of possibilities. Those for meaning A include [[nondeterministic programming]] and [[nondeterministic finite automaton]]. Those for meaning B include [[deterministic algorithm]], [[concurrent computing]] and [[concurrency control]]. For disambiguation there is [[indeterminacy in computation]]. [[User:JonH|JonH]] ([[User talk:JonH|talk]]) 16:11, 30 January 2022 (UTC)
::I agree with the confusing tag, but I disagree with the suggested solution. This article is essentially a stub, and is awfully written. Although short, it is full of incorrect or approximate statements. So, the first thing to do is to rewrite it completely, with a section for each sort of nondeterminism (concurrent programming, random choices, nondeterminism of the output vs. nondeterminism of the computational path for a determinisitic output, etc.). One may add a section on nondeterministic models of computation, for showing that it models nondeterminism and parallelism in some non-realistic way (this is non-realistic in the sense no choice is done, and the computation stops when the fastest of all possible choices is finished). The computational complexity of non-deterministic algorithms must also be considered (in general the average complexity, which has nothing to do with any nondeterministic complexity).
:: It is only when the article will describe well its subject that a discussion on the structure of the related articles could be useful. [[User:D.Lazard|D.Lazard]] ([[User talk:D.Lazard|talk]]) 17:29, 30 January 2022 (UTC)
:I suspect that the source of the confusion in discussing non-deterministic algorithms indeed arises from the use of "choice" in its apparent definition. However when looked at mathematically a Non-Deterministic Algorithm might be making an infinite number of choices, as it could contain infinite paths. "Infinite choices" is mathematically modeled by the Axiom of Choice in ZF Set Theory, in this context probably a special case like "Countable Dependent Choice".
:So when discussing a "paper and pencil" formulation of a non-deterministic algorithm indeed it can take the many (or conceptually infinite) choices that it needs to. This is reasoned about using "Konig's Lemma" in places such as the powerset construction and elsewhere. However the Axiom of Choice is non-constructive and should not be used in a mechanical setting (without explanation, at least). But Konig's lemma fails in the mechanical setting. Indeed it fails in a recursive setting (Kleene's singular Tree theorem) resulting in an axiom system known as WKL, which extends recursion theory a little.
:Thus mechanical Non-Deterministic Algorithms will not behave as expected, and not behave as their "paper and pencil" counterparts.
:Unitl this theory is explained there will be controversies over the term Non-Deterministic Algorithms. [[User:RoyMWiki|RoyMWiki]] ([[User talk:RoyMWiki|talk]]) 16:08, 16 April 2023 (UTC)
::Isn't that the point of artificial intelligence? We are literally trying to build systems where this is the case. From a practical standpoint there are "non-deterministic" systems out there which are outside of the control of the testing party, sure they could be deterministic if you got super scientific with it but to what extent is that practical vs just saying "its non deterministic". I'm sure we could invest enough to prove everything is in-fact deterministic but it would be quite expensive and impractical and what's the point? Just my 2 cents as an engineer working on systems like this every day. [[Special:Contributions/172.58.255.84|172.58.255.84]] ([[User talk:172.58.255.84|talk]]) 22:02, 5 March 2024 (UTC)
I have rewritten the article to emphasize the commonality and differences between the different uses of nondeterminism, following Lazard's suggestion "It would probably better to expand it into a detailed explanation in the article." As for the philosophical questions about AI and free will, there may be a connection but I don't think this article is the place for them. —[[User:David Eppstein|David Eppstein]] ([[User talk:David Eppstein|talk]]) 06:31, 7 July 2024 (UTC)
:This is much better. Previously, having read this talk page and Hehner (''Logic of Programming'', 1984, page 118), I believed that the word “nondeterminism” is used in computer science with various incompatible meanings. So I thought trying to cover them all in an introduction was a bad idea. But having read this new version of the article, I now understand. Thanks.
:I have a constructive suggestion for consideration. This article could be renamed from "Nondeterministic algorithm" to "Nondeterminism" with just a small change to the first sentence. At present, [[nondeterminism]] is a disambiguation page, and a reader who wants to learn about nondeterminism is presented with a list of 5 articles (including this one). Depending on the order in which they read the articles, they may become confused. They would be better off reading this article first. [[User:JonH|JonH]] ([[User talk:JonH|talk]]) 16:01, 7 July 2024 (UTC)
|