The Wikipedia article mentions non-determinism in the context of dataflow architectures. Arthur Veen's paper mentions non-determinism when it elaborates on MERGE nodes as conditional constructs.

Are dataflow architectures non-deterministic in the sense of Non-Deterministic Turing Machine?

For any program which deterministically runs on a von Neumann architecture, can we guarantee that it runs deterministically on a data flow architecture?


Are dataflow architectures non-deterministic in the sense of Non-Deterministic Turing Machine?

In principle one could create a non-deterministic dataflow architecture, but that would be a bit odd. There is nothing about dataflow that fundamentally requires determinism or non-determinism.

Normally I'd expect that a dataflow architecture would be deterministic in the sense that the result of the computation is a deterministic function of the inputs (in principle it doesn't have to be that way, but that's probably the common case for a dataflow architecture). Of course, the order in which intermediate values are computed might not be deterministic, even though the result is. See Why doesn't parallelism necessarily imply non-determinism? for a detailed explanation of that point.

Beware that there are multiple meanings of the word "non-determinism". One meaning is non-determinism in the sense of a non-deterministic Turing machine, i.e., there can be a choice of transitions and the machine magically makes the best choice at every step; this is not implementable directly in real-world machines, so is purely a theoretical nothing. Another meaning is that the system is not deterministic, e.g., there are aspects of its behavior that are not specified or random; those are resolved somehow but not necessarily by choosing the best choice. Occasionally I've seen people use the word "indeterminism" for the latter notion, but that seems to be pretty rare. See also Differences and relationships between randomized and nondeterministic algorithms?, https://cs.stackexchange.com/a/38158/755, https://en.wikipedia.org/wiki/Nondeterministic_algorithm, https://en.wikipedia.org/wiki/Indeterminacy_in_computation.

  • $\begingroup$ I don't think it's useful to think of it as "the machine magically making the right choice", because, as you say, it isn't realistic; instead, a choice is left open to the machine, and certain choices lead to a desired outcome. This is perfectly natural and it describes many real-life systems. $\endgroup$ – reinierpost May 6 '19 at 8:09
  • $\begingroup$ @reinierpost, I think this is exactly what I'm referring to -- there are multiple possible things that "non-determinism" might mean. The way non-determinism works in a Turing machine is that it magically makes the right choices (the ones that lead to a desired outcome), if such choices exist. That notion doesn't describe real-life machines. There's a different notion of non-determinism where the choice is left open to the machine and the machine's choice is arbitrary or not specified; that does describe real-life systems. Different notions, with the same word (non-determinism) used. $\endgroup$ – D.W. May 6 '19 at 16:04
  • $\begingroup$ No, it's the same notion. There is no magic in nondeterministic machines! They don't 'make the right choice'. They just choose, the result is one of possibly many different outcomes, and we're happy if one of them is the string to be accepted. The magic is not in the machine's operation, but in our definition of acceptance. This is how it was taught to me, and it doesn't involve any magic. $\endgroup$ – reinierpost May 6 '19 at 22:27
  • $\begingroup$ @reinierpost, Yeah. I like that viewpoint a lot, and it definitely helps reduce confusion. However not everyone teaches non-determinism in that way. I guess my point is that there are multiple reasonable ways to interpret what non-determinism might mean; when it comes to understanding why someone else did or didn't call a system non-deterministic, the situation can be confusing if you're only familiar with one notion and it's not the same notion that other person was using. $\endgroup$ – D.W. May 6 '19 at 22:37
  • $\begingroup$ Absolutely ... it just irks me that one of those views doesn't make sense to me. $\endgroup$ – reinierpost May 7 '19 at 8:43

Dataflow architectures are more nondeterministic than a nondeterministic Turing Machine.

With a nondeterministic Turing Machine, you still have a single machine that performs all the actions. All input is predetermined, it is already on the input tape. The only nondeterminism in the system is in the choice of the next transition, for which multiple options may exist. Time is not a factor at all.

With a dataflow architecture, we may have any number of different data processing components, operating concurrently. The input isn't predetermined, but it streams in on the input channels, with unpredictable values and possibly at unpredictable rates. The system's behavior may be strongly affected by the value of the data items flowing in, the relative order at which they flow in on different channels, and time-related factors (e.g. how fast they flow in). So the amount of nondeterminism is generally much higher.

  • $\begingroup$ What do you mean by "All input is predetermined, it is already on the input tape"? Don't we have to know the alphabet of a dataflow architecture ahead of time too? Correct me if I am wrong, having all the symbols on the tape is just TM jargon for knowing the (finite) alphabet? $\endgroup$ – foki May 6 '19 at 14:01
  • 1
    $\begingroup$ Not only that, it means we know the full input in advance. It is assumed nobody messes with the tape contents other than the Turing machine performing its operations. The reason Turing machines are defined this way is their purpose, which is to compute functions from input strings to output strings, by starting on an input string and producing the corresponding output string. $\endgroup$ – reinierpost May 6 '19 at 16:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.