我该如何为这个不变量编写一个循环?

2024-02-13

这些是查找数组 b[h.k] 最小值的算法的断言:

Precondition: h <= k < b.length
Postcondition: b[x] is the minimum of b[h...k]

这是这个不变量的正确循环吗?

不变式:b[x] 是 b[h...t] 的最小值

int x = t;    int t = h;
// {inv: b[x] is the minimum of b[h...t]}
while (t != k) {
   t = t+1;
   if (b[t] < b[x])
      { x = t;}
}

您可以通过这种方式找到数组的最小值(伪代码):

// assume b.length > 0
min = b[0]
for i=1 to b.length
  if b[i] < min
    min = b[i]

将其限制为b[h, ..., k]:

min = b[h]
for i=h+1 to k
  if b[i] < min
    min = b[i]

所以你基本上只是改变循环的上限和下限

Since h<=k<b.length, b[h]有效并从下一个元素开始执行循环,直到k迭代所需的元素(h==k,循环为空)

更新:由于您在将伪代码实现为java时始终失败,我将为您翻译它:

// assume: int b[]; int h; int k; h<=k<=b.length and b.length>0
// find min == b[i] such that b[i]<=b[j] for all h<=j<=k
int min = b[h];
for (int i=h+1; i<k; i=i+1) {
  if (b[i] < min) {
    min = b[i];
  }
}
// here: min contains the (first) minimum element within b[h, ..., k]

注意:你可以写i=i+1 as ++i as well

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我该如何为这个不变量编写一个循环? 的相关文章

随机推荐

  • 如何在Chrome扩展中获取剪贴板数据?

    我很难找到有关如何在 Chrome 扩展程序中添加 Ctrl C 监听器 获取剪贴板数据 然后写回剪贴板的最新信息 我发现的所有旧代码都是针对现已弃用的旧版本 基本上你可以使用操作剪贴板document execCommand paste
  • Spring中@Configuration和@Component有什么区别?

    ComponentScan使用两者创建bean Configuration and Component 交换时这两个注释都可以正常工作 那有什么区别呢 Configuration 表示一个类声明一个或多个 Bean 方法并且可以被Sprin
  • 启动作业中的“启动进程-NoNewWindow”?

    我在启动作业中使用启动进程时遇到问题 特别是在使用时 NoNewWindow 例如这个测试代码 Start Job scriptblock Start Process cmd NoNewWindow Wait ArgumentList c
  • 扫描代码注释并转换为标准格式的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个 C 项目 该项目有许多不同的作者和许多不同的文档风格 我是以下的忠实粉丝doxygen
  • 通过 Nginx、Django 提供 206 字节范围服务

    我让 Nginx 为我的静态 Django 文件提供服务 该文件在 Gunicorn 上运行 我正在尝试提供 MP3 文件并让它们具有头部 206 以便 Apple 接受它们用于播客 目前 音频文件位于我的静态目录中 并直接通过 Nginx
  • 受保护的构造函数有哪些实际用途?

    为什么有人会声明构造函数受保护 我知道构造函数被声明为私有 目的是不允许它们在堆栈上创建 当一个类是 旨在作为 抽象类时 受保护的构造函数是完全正确的 在这种情况下 您不希望从类实例化对象 而只想使用它来继承 还有其他用例 例如某些构造参数
  • 使用没有表单的视图创建 django 对象

    我想知道如何能够根据用户将要访问的 URL 在数据库中创建对象 例如 他们将转到 schedule addbid 1 这将在表中创建一个对象 其中包含投标的所有者 他们投标的时间表以及投标是否已完成 这是迄今为止我的投标模型的内容 clas
  • 列表中的枚举值

    我有一个枚举类 例如 public enum USERTYPE Permanant 1 Temporary 2 在我的业务对象中 我只是将这个枚举声明为 private List
  • 如何根据模型类上返回布尔值的方法的结果来过滤查询集?

    作为我的模型类之一的成员函数 我有一个is visible self user 返回布尔值的方法 根据定义 它需要请求用户 DjangoUser模型 作为输入 我希望能够根据对此方法的响应来过滤查询集 如何使用此函数作为查询集过滤器 对于上
  • keySet().toArray(new Double[0]) 的作用是什么?

    下面的返回有什么作用 我该如何使用该值 private Map
  • 提交表单时如何从 mgt-people-picker 获取输入值

    我在用着mgt people picker从 ASP Net Razor 应用程序中 使用ProxyController从 Graph API 获取所有数据 一切正常 现在我想从我创建的表单中获取信息 其中包含人员列表mgt people
  • ColdFusion 通过 Java 执行 OWASP esapi

    我有一些旧的 ColdFusion 代码 它最初是为 CF9 编写的 但现在运行在 CF 2016 上 应用程序 cfc local esapi createObject java org owasp esapi ESAPI applica
  • Postgresql 使用外键约束截断表

    目前我正在尝试截断在 Postgresql 11 3 上具有外键约束的表 我尝试这样做 BEGIN SET CONSTRAINTS ALL DEFERRED TRUNCATE tableA COMMIT 但收到错误 ERROR cannot
  • UIPageViewController 的大小很奇怪

    我正在使用一个UIPageViewController在我的应用程序中 它工作得很好 但是当我翻页时 下一页似乎在比屏幕大的框架中初始化 翻页时 只有下一页视图的一部分viewController适合屏幕 我正在初始化UIPageViewC
  • 识别 NHibernate 代理类

    我不是 NHibernate 用户 我编写了一个序列化实用程序库 用户记录了一个功能请求 要求我处理 NHibernate 代理类 将它们视为与实际类型相同 目前我的代码将它们视为意外继承 并引发异常 代码不会提前了解 NHibernate
  • 将 BytesMessage 转换为字符串?

    最好的转换方式是什么ByteMessage to String 我有以下代码 我们有更干净的方法吗 BytesMessage byteMessage set byteMessage byte byteArr new byte int byt
  • jsTree 禁用某些复选框

    将 jsTree 3 1 0 与复选框插件一起使用是否可以允许并非所有复选框都进行检查 禁用其中一些 我在这里找到了旧版本 jsTree 的解决方案jstree 禁用复选框 https stackoverflow com questions
  • 比较日期时间函数 cypress

    我有一个表单 允许用户输入日期范围 并且输出将仅包含该特定日期的结果 我可以使用 type 函数将日期输入到表单中 但是 我不确定如何检查结果是否在指定的范围内 例如 如果输入的日期是 17 03 2019 我应该能够使用这样的代码检查表中
  • Optaplanner 将客户从有效的 VRP 解决方案中删除

    基于此question https stackoverflow com questions 47913276 optaplanner vrp remove customer from working solution我尝试了以下方法 pub
  • 我该如何为这个不变量编写一个循环?

    这些是查找数组 b h k 最小值的算法的断言 Precondition h lt k lt b length Postcondition b x is the minimum of b h k 这是这个不变量的正确循环吗 不变式 b x