Algorithm 飞机轰炸问题-帮助

Algorithm 飞机轰炸问题-帮助,algorithm,Algorithm,我正在培训代码问题,在这一次我有问题要解决,你能给我一些如何解决的建议吗 问题就在这里: 问题12:愤世嫉俗的时代 问题是这样的(但请参考源问题的上面链接,它有一个图表!): 你的任务是在地图上找到轰炸机预计要飞行的点的序列,以便它击中所有重要的环节。从A到B的链接是至关重要的,因为它的缺失将A和B完全隔离。换句话说,从A到B(或反之亦然)的唯一途径是通过该链接 由于敌人的反击,飞机可能随时都要撤退,因此飞机在任何时候都应该跟随最接近的关键链路,即使最后总距离变大 给定所有坐标(飞机的初始位置

我正在培训代码问题,在这一次我有问题要解决,你能给我一些如何解决的建议吗

问题就在这里:

问题12:愤世嫉俗的时代

问题是这样的(但请参考源问题的上面链接,它有一个图表!):

你的任务是在地图上找到轰炸机预计要飞行的点的序列,以便它击中所有重要的环节。从A到B的链接是至关重要的,因为它的缺失将A和B完全隔离。换句话说,从A到B(或反之亦然)的唯一途径是通过该链接

由于敌人的反击,飞机可能随时都要撤退,因此飞机在任何时候都应该跟随最接近的关键链路,即使最后总距离变大

给定所有坐标(飞机的初始位置和地图中的节点)和距离R,您必须确定飞机必须投弹的位置顺序

该顺序应在初始位置开始(起飞)和结束(着陆)。除了开始和结束之外,所有其他位置都必须精确地落在地图的一段中(即,它应该对应于非命中重要链接段中的一个点)

使用的坐标系为UTM(通用横墨卡托)北距和东距,基本上对应于欧几里得世界透视图(X=东距;Y=北距)

输入 每个输入文件将以三个浮点数开始,表示机场的X0和Y0坐标以及范围R。第二行包含一个整数N,表示道路网络图中的节点数。然后,下一个N(
  • 先对输入进行预处理,这样你就能识别出瓶颈。像弗洛伊德·沃沙尔这样的算法会对你有所帮助
  • 将问题建模为一个启发式搜索问题,您可以计算一个覆盖所有瓶颈的MST,并将边的成本之和作为一个启发式
  • 正如评论员所说,试着提出具体的问题,无论是在这里还是向监督你们班的助教提问
  • 别忘了提一下你从哪里得到这些提示的

  • 这个问题可以分为两部分

    1) 找到重要的链接

    这些只不过是所描述图表中的数字。请参阅wiki页面(在上一句中链接到),其中提到了Tarjan查找桥梁的算法

    2) 一旦你有了重要的链接,你需要找到最小数量的点,给定炸弹的半径,将覆盖链接。为此,对于每个链接,您在其周围创建一个区域,在该区域投下炸弹将摧毁它。现在形成这些区域的图形(如果两个区域相交,则两个区域相邻)。您可能需要在这个图中找到一个最小值

    我还没有想清楚(特别是第二部分),但希望能有所帮助


    祝你在比赛中好运

    我认为白痴在第一部分是正确的,但在第二部分。。。 问题描述没有说明任何关于“最小点数”的内容。它告诉我们飞机会飞到最近的关键环节。 因此,我认为第2部分会简单得多:

    • 查找距离当前位置最近的未命中段
    • 移动到最近线段上的最近点
    • 轰炸当前位置(删除与圆相交的所有线段)
    • 重复此操作,直到没有未命中的重要链接

    这种直接算法的复杂度为O(N*N),但考虑到输入约束,这应该足够了。

    您应该使用什么语言?另外,不要指望有人为你做这件事。人们可以给你提示,但仅此而已。到目前为止你试过什么?你被困在哪里了?我能给你的最好建议是,你应该自己开始做作业,并就具体问题寻求具体的帮助。正如帖子所说,你的问题太长太密集,我无法尝试开始帮助你。我只有在得到一些学分的情况下才会解决这个问题。对我来说,这不像是家庭作业。此外,第一行是:“我在训练代码问题”,我想这是编程竞赛类型的问题。旅行推销员是不对的。对不起,这似乎不明显。你能详细说明一下吗?根据我在问题声明指针贴出之前的理解,这一切都是为了找到飞机的计划:即从机场飞到X地点,在X地点投炸弹,从X地点飞到Y地点,在Y地点投炸弹,等等。你的回答提供了一个非常可靠的方法来确定这些地点。搜索空间将包括哪些地点已经被轰炸,以及当前的计划地点,从一个州到下一个州的行动(飞到或轰炸),轰炸行动的成本为零,飞行行动成本将与当前飞机位置和目标位置之间的距离成比例。另一种可能性是——一旦你确定有用轰炸区域的方法被应用——将整个事情建模为一个带成本的STRIPS()规划问题,并使用一个好的独立于领域的规划器来计算计划,就像你在这里可以找到的:这完全取决于@peiska的目的。我认为他是从头开始做这件事的,如果他能拿出现成的工具,比如我建议的规划算法,那就可以归结为编写一个程序,将以规定格式呈现的问题映射为条状问题,打电话给计划者来解决这个问题,然后将计划者给出的解决方案映射回所述原始问题所需的表示形式。我相信其目的是为了投出最少数量的炸弹,而不考虑行驶的总距离。最近的链接只是根据到机场的距离对点进行排序,以将攻击风险降至最低。(至少这是我的解释)@白痴:投最少数量的炸弹(这不是政府明确要求的)
    Sample input 1
    
    102.3 553.9 0.2 
    14 
    342.2 832.5 
    596.2 638.5 
    479.7 991.3 
    720.4 874.8 
    744.3 1284.1 
    1294.6 924.2 
    1467.5 659.6 
    1802.6 659.6 
    1686.2 860.7 
    1548.6 1111.2 
    1834.4 1054.8 
    564.4 1442.8 
    850.1 1460.5 
    1294.6 1485.1 
    17 
    1 2 
    1 3 
    2 4 
    3 4 
    4 5 
    4 6 
    6 7 
    7 8 
    8 9 
    8 10 
    9 10 
    10 11 
    6 11 
    5 12 
    5 13 
    12 13 
    13 14 
    
    Sample output 1
    102.3 553.9 
    720.4 874.8 
    850.1 1460.5 
    102.3 553.9