Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Random 采访问题:连续颜色少于三种的网格的确定时间随机着色_Random_Graph Coloring - Fatal编程技术网

Random 采访问题:连续颜色少于三种的网格的确定时间随机着色

Random 采访问题:连续颜色少于三种的网格的确定时间随机着色,random,graph-coloring,Random,Graph Coloring,最近从FAANG的采访中得到了这个问题 在游戏Bejeweld中,3个或更多相同颜色的上/下/左/右导致爆炸。玩家将交换相邻的颜色以产生爆炸效果。创建一个随机生成器来填充电路板的颜色 我建议先生成电路板,然后如果电路板没有一种可能的方法来交换爆炸,我们可以通过交换一些颜色来创建爆炸。没关系 然后他深入到问题的随机生成部分,然后我建议使用一个集合和一个while循环来生成每种颜色。设置是我不想生成的颜色。然而,这将导致冲突,并且随机生成器可能永远持续下去,因为它具有不确定性的时间复杂性。他想让我制

最近从FAANG的采访中得到了这个问题

在游戏Bejeweld中,3个或更多相同颜色的上/下/左/右导致爆炸。玩家将交换相邻的颜色以产生爆炸效果。创建一个随机生成器来填充电路板的颜色

我建议先生成电路板,然后如果电路板没有一种可能的方法来交换爆炸,我们可以通过交换一些颜色来创建爆炸。没关系

然后他深入到问题的随机生成部分,然后我建议使用一个集合和一个while循环来生成每种颜色。设置是我不想生成的颜色。然而,这将导致冲突,并且随机生成器可能永远持续下去,因为它具有不确定性的时间复杂性。他想让我制作一个随机发生器,它的时间复杂度确定,但仍然是随机的,同时避免在电路板上产生爆炸

我主要被困在这个问题上,关于随机确定性时间复杂度算法的内容似乎不多

编辑:


找到一种生成NxM网格图随机着色的算法,在该算法中,允许两个相同颜色的连续节点,但不允许三个或更多,在确定时间(多项式时间)内运行,并且使用了两种以上的颜色。

我收到了以下信息:

这似乎很简单

  • 从未着色的网格图开始
  • 按从左到右、从上到下的明显顺序访问所有节点。在每个访问的节点上,为其选择任何颜色,该颜色不能完成同一颜色的三行三元组
始终可以为每个节点选择一种颜色,因为当前访问的节点最多可以完成两个可能的三元组(两个节点位于其左侧或其上方-其他方向尚未着色),因此最多不允许使用两个k>2颜色


这个问题似乎不完整。可能有多少种颜色?我建议将这个问题建模为一个图,其中节点根据颜色进行编号。比如说,它有两种以上的颜色。这真的没关系。然后面试的问题被简化为:是否有一个多项式时间算法来随机生成一个图的着色,其中每个节点都是编号的[0,n)和三个或三个以上的相邻节点不存在,如果存在,是什么?NxM板,在确定性运行时不存在三种或三种以上相邻颜色的情况下,为板的每个元素随机生成颜色。假设可以使用两种以上的颜色。