TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Five Kinds of Nondeterminism

135 点作者 BerislavLopac3 个月前

11 条评论

nrfulton3 个月前
&quot;nondeterminism as abstraction&quot; is, imo, the best example of an &quot;FM export&quot;.<p>Usually you think of nondeterminism as <i>adding</i> complexity to a system -- concurrency, randomness, etc.<p>So it&#x27;s kind of surprising to notice that translating a deterministic system into a non-deterministic system is often the first step people take when proving things about complicated algorithms.<p>Planning, optimization and reinforcement learning are the canonical examples where the reason for this step is easiest to see. These are usually very complex algorithms. You could prove things about an actual implementation, line of code by line of code, but that would be a toooon of work.<p>If instead you can find over-approximation `inv : State x Action -&gt; List[State]`, and if you know that this invariant is strong enough to imply whatever other properties you want, then you just need to make sure that `inv` over-approximates the actual behavior of the underlying system (either by interrogation or by construction).<p>It&#x27;s a very simple observation, motivated by the pragmatics of engineering proofs about complicated systems, which can have a direct impact on how you think about designing those same systems. Now that huge inscrutable models are all the rage, it&#x27;s a fun little FM trick I used almost every day even though I rarely work on systems that I&#x27;d bother to formally model or verify.
评论 #43122874 未加载
评论 #43123555 未加载
saghm3 个月前
I expected this to be about different meanings of the word &quot;nondeterminism&quot; rather than different causes of a single meaning. Back in college, I remember someone once pointing out to me that the word was used for fairly different concepts in different classes; in our theory classes, &quot;nondeterministic&quot; was used for stuff like finite automata and Turing machine models of computation (like the &quot;N&quot; in &quot;NP&quot; compared to just &quot;P&quot;), whereas in some other classes it might get used the way it&#x27;s used in this article (e.g. for an AI algorithm that wouldn&#x27;t always produce the same results). Maybe someone more educated than me might be able to connect why the same word is used for both of those, but as far as I&#x27;m able to tell, they seem entirely unrelated.
评论 #43121963 未加载
评论 #43122606 未加载
评论 #43125708 未加载
评论 #43131514 未加载
评论 #43121939 未加载
kazinator3 个月前
There are two main kinds of nondeterminism.<p>1. One single future is chosen at every turn and we go down that rabbit hole and never turn back. The author&#x27;s determinisms all land into here.<p>2. Explicitly modeled nondeterminism, whereby we execute all the future possibilities (e.g. nondeterministic finite automaton NFA, Mac Carthy&#x27;s &quot;amb&quot; operator.)<p>I can&#x27;t give you a star sticker if you don&#x27;t mention these, sorry.
评论 #43123094 未加载
评论 #43126015 未加载
nayuki3 个月前
I wonder if it was an intentional joke that immediately under the heading &quot;3. User Input&quot;, there is a text box to enter your email to subscribe to the newsletter.
orthecreedence3 个月前
Lately I&#x27;ve been working on a testing system for a DAG identity system I&#x27;m working on. The system tries thousands of permutations of DAG setups, all driven from a random seed. In other words, it&#x27;s entirely repeatable and deterministic each time. If something breaks, I can pinpoint the exact run and re-run it with the exact same parameters.<p>It took a long time to get there. One of the main things I had root out, time after time, was the use of HashMap&#x2F;HashSet (this is in rust) which I converted to BTreeMap&#x2F;BTreeSet because the former are not deterministic when iterating over them, causing all kinds of random permutations for a given seed. I knew this going in, but kind of surprised myself how often I almost absentmindedly reached for a non-deterministic data type when determinism was important.
评论 #43123394 未加载
petesergeant3 个月前
I’m struggling to wrap my head around abstraction as non-determinism here. Yes, an implementation could change, but then you’ve loaded other code?
评论 #43126622 未加载
评论 #43125686 未加载
评论 #43125539 未加载
saltlyfe3 个月前
Your first example is not non-deterministic, it&#x27;s probabilistic. Drawing a sample from a truly random distribution doesn&#x27;t make the program non-deterministic.<p>Non-determinism comes from transitions which have no known distribution and might cause your program to take alternate execution paths without any predefined rule. That&#x27;s clearly not true in your example.
评论 #43127229 未加载
monkeycantype3 个月前
I&#x27;m sure this is a really great article, but I was really excited that this was going to be scientific, philosophical take on different conceptions of possible mechanics that might underly our observations of quantum behaviour and the implications on ideas of free will. I&#x27;ll have to ask Claude to write that article for me so I can read it.
moomin3 个月前
Ideally everyone who visits the page would get the entries in a different order.
onion-soup3 个月前
randomness is an illusion
moonlion_eth3 个月前
randomness is epistemology. determinism is ontology