热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

进出口在边上的迷宫的一般解法

最近在小百合上看到有人贴了一个迷宫:有人说SOHU上有人用什么小工具20分钟才走出来,突发奇想,如果自己做个程序几分钟能走出来?因为记得很早(8090年代)有看过一本名叫《智力》的杂志,

最近在小百合上看到有人贴了一个迷宫:


有人说SOHU上有人用什么小工具20分钟才走出来,突发奇想,如果自己做个程序几分钟能走出来?因为记得很早(80/90年代)有看过一本名叫《智力》的杂志,每期都有复杂的迷宫,而且走出来之后路线能够形成图案,所以也很好奇这个迷宫走出来是个啥图案。

脑子中第一个闪过的念头就是地球人都知道的迷宫算法:贴着一边的墙走,当然也可以做深度有限/广度优先的搜索,方法是挺简单,就是不知道要用多长时间。

于是想用个东西先试试看,首先想到的是画笔程序,用填充工具在迷宫的空白道路上一点,靠,居然过了几乎有半分钟才出结果。结果令人沮丧,迷宫的道路是连通,所有的路都被涂上颜色了。这个画笔不知道用的什么搜索算法来填充的,真是太慢了。

又改用Photoshop,果然是强,半秒钟不到,它就能把迷宫填满了。可惜问题还是没解决。难道真要自己写个程序?

突然想到在哪里看到过(《皇帝新脑》?)的一个二维动物问题,说一个二维动物如果有口也有另外的肛门,那么这个动物肯定被分成两半了(废话!)。迷宫不就是个分成两半的二维动物吗?“肠道”便是走出迷宫的路线。所以不应该涂“道路”,而应该去涂“墙”。

还是用画笔,用填充工具随便找个黑色的墙一点,这下倒是很快,1秒不到,迷宫被分成了两半,中间的分界便是答案!挺有意思的,所有的这种迷宫应该都可以这样解决了,不用什么其它工具,1秒便可解决。

不过要说算法的时间复杂度,这个涂墙的方法可能最小复杂度会比找路的大,但是平均复杂度应该差不多。


推荐阅读
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 本文深入探讨了二叉搜索树(Binary Search Tree, BST)及其操作,包括查找、插入和删除节点。同时,文章还介绍了平衡二叉树(AVL树)的概念及调整方法,并详细讨论了如何判断两个序列是否构成相同的二叉搜索树。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 随着生活节奏的加快和压力的增加,越来越多的人感到不快乐。本文探讨了现代社会中导致人们幸福感下降的各种因素,并提供了一些改善建议。 ... [详细]
author-avatar
chen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有