扩展到用反向弧编码最小和最大约束的有向图的方法和装置制造方法

文档序号:6496693阅读:108来源:国知局
扩展到用反向弧编码最小和最大约束的有向图的方法和装置制造方法
【专利摘要】公开了用于基于布局生成显示的装置和方法。接收布局,该布局指定容器矩形内的一组矩形组件。每个矩形组件具有大小。从布局确定多条网格线。每个矩形组件与基于该矩形组件的大小的至少两条网格线相关联。生成约束的系统,其包括最小约束和最大约束。每个约束与多条网格线中的至少两条网格线相关。最小约束和最大约束分别指定至少两条网格线之间的最小值和最大值。解决约束的系统以确定每条网格线的位置。基于网格线的位置来生成矩形组件的显示。
【专利说明】扩展到用反向弧编码最小和最大约束的有向图的方法和装
[0001]相关申请的交叉引用
[0002]本申请要求2012年8月3日递交的美国专利申请13/566,749号的优先权,该美国专利申请要求2011年9月30日递交的标题为“Apparatus and Methods for EfficientLayout of Components on a User-1nterface” 的美国临时申请 61/541,853 号的优先权,这里通过引用将这些美国申请的内容完全并入用于所有目的。
【背景技术】
[0003]在计算设备上操作的许多现代计算机应用提供图形用户界面来用于用户交互。控制计算设备的操作系统频繁地向这些应用提供某种类型的支持以辅助设计用户界面来允许利用操作系统的应用有共同的外观和感觉。
[0004]操作系统提供给应用来帮助设计用户界面的示例工具是“布局管理器”,其被配置为接收“布局”(layout),或者说用于将用户界面可用的一个或多个相对较大的矩形划分成可由空间分隔的一组较小的矩形的系列指令。相对较大的矩形通常被称为“容器”(container),而这些较小的矩形通常被称为“组件”(component)。通常,布局管理器实现与容器相关联的布局策略。

【发明内容】

[0005]在第一方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件。每个矩形组件具有至少一个维度上的至少一个大小。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线是基于该矩形组件的至少一个大小的。计算设备生成约束的系统,其中约束的系统的每个约束与多条网格线中的至少两条网格线相关。计算设备解决约束的系统,以为多条网格线中的每条网格线确定该网格线的位置。计算设备基于网格线的位置生成该组矩形组件中的至少一些矩形组件的显示。
[0006]在第二方面中,计算设备接收用户界面布局,用户界面布局被配置为指定至少第一矩形组件和第二矩形组件,两者都在容器矩形内。第一矩形组件在水平或垂直维度上具有第一大小。第二矩形组件在水平或垂直维度上具有第二大小。计算设备基于用户界面布局确定多条网格线。第一矩形组件与多条网格线中的第一组至少两条网格线相关联,并且第二矩形组件与多条网格线中的第二组至少两条网格线相关联。计算设备可生成约束的系统,其中约束的系统中的第一约束与第一组至少两条网格线相关,并且约束的系统中的第二约束与第二组至少两条网格线相关。计算设备解决约束的系统以为第一组和第二组网格线中的各条网格线确定各条网格线各自的位置。计算设备可基于各条网格线各自的位置生成包括第一和第二矩形组件的用户界面显示。计算设备可显示该用户界面显示。
[0007]在第三方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件。每个矩形组件具有至少一个维度上的至少一个大小。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线基于该矩形组件的至少一个大小。计算设备生成约束的系统,其中约束的系统的每个约束与多条网格线中的至少两条网格线相关。计算设备生成包括多个节点和多个边缘的图。每个节点与节点值相关联。多个节点对应于多条网格线,并且多个边缘对应于约束的系统。计算设备对多个边缘进行拓扑排序。计算设备通过利用被配置为结合经拓扑排序的多个边缘进行操作的贝尔曼-福特(Bellman-Ford)算法的变体对于图解决单源路径长度问题来确定网格线的位置。计算设备基于网格线的位置生成该组矩形组件中的至少一些矩形组件的显示。
[0008]在第四方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件,其中该组矩形组件中的每个矩形组件具有至少一个维度上的至少一个大小。该组矩形组件包括空间组件,该空间组件被配置为不可见并且被配置为不对用户界面事件作出反应。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线是基于该矩形组件的至少一个大小的。计算设备生成约束的系统,其中约束的系统的每个约束与多条网格线中的至少两条网格线相关。计算设备解决约束的系统以为多条网格线中的每条网格线确定该网格线的位置。计算设备基于网格线的位置生成该组矩形组件中的至少一些矩形组件的显示。
[0009]在第五方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件。该组矩形组件中的每个矩形组件具有至少一个维度上的至少一个大小。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。至少两条网格线是基于该矩形组件的至少一个大小的。计算设备生成约束的系统,约束的系统包括一个或多个正常顺序约束。约束的系统的每个约束与多条网格线中的至少两条网格线相关。一个或多个正常顺序约束指定多条网格线的正常顺序。计算设备解决约束的系统以为多条网格线中的每条网格线确定该网格线的第一位置。计算设备识别一个或多个正常顺序约束中的至少一个可放松的正常顺序约束。计算设备基于放松至少一个可放松的正常顺序约束来解决约束的系统以为多条网格线中的每条网格线确定该网格线的第二位置。对于多条网格线中的至少一条被放松的网格线,第二位置不同于第一位置。计算设备基于网格线的第二位置来生成该组矩形组件中的至少一些矩形组件的显示。计算设备显示该显示。
[0010]在第六方面中,在计算设备处接收布局。该布局被配置为指定容器矩形内的一组矩形组件。每个矩形组件具有至少一个维度上的至少一个大小,并且被配置有重力参数。每个矩形组件基于该矩形组件的重力参数被分类为灵活的或不灵活的。计算设备可从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线是基于该矩形组件的至少一个大小的。计算设备可生成约束的系统,其中约束的系统的各个约束与多条网格线中的至少两条网格线相关。计算设备可解决约束的系统以为多条网格线中的每条网格线确定该网格线的位置。计算设备可基于网格线的位置来生成该组矩形组件中的至少一些矩形组件的显示。
[0011]在第七方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件。该组矩形组件中的每个矩形组件具有至少一个维度上的至少一个大小。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线是基于该矩形组件的至少一个大小的。计算设备生成约束的系统,约束的系统包括最小约束和最大约束。约束的系统的每个约束与所述多条网格线中的至少两条网格线相关。最小约束指定至少两条网格线之间的最小值,并且最大约束指定至少两条网格线之间的最大值。计算设备解决约束的系统以为多条网格线中的每条网格线确定该网格线的位置。计算设备基于网格线的位置来生成该组矩形组件中的至少一些矩形组件的显示。
[0012]在第八方面中,计算设备接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件。该组矩形组件中的每个矩形组件具有至少一个维度上的至少一个大小。计算设备从布局确定多条网格线。该组矩形组件中的每个矩形组件与这多条网格线中的至少两条网格线相关联。这至少两条网格线是基于该矩形组件的至少一个大小的。计算设备生成约束的系统。约束的系统的每个约束与多条网格线中的至少两条网格线相关。约束的系统包括不一致约束。生成具有多个节点和多个边缘的图。每个节点与节点值相关联。多个节点对应于多条网格线。多个边缘对应于约束的系统。计算设备利用被配置为结合不一致约束进行操作的贝尔曼-福特算法的变体解决约束的系统以确定网格线的位置。计算设备基于网格线的位置生成该组矩形组件中的至少一些矩形组件的显示。
[0013]本领域普通技术人员通过阅读以下详细描述并在适当时参考附图,将清楚这些以及其他方面、优点和替换方案。另外,应当理解,此
【发明内容】
部分和本文献中其他地方提供的描述打算以示例而非限制的方式说明要求保护的主题。
【专利附图】

【附图说明】
[0014]图1示出了根据示例实施例的分布式计算体系结构。
[0015]图2A是根据示例实施例的计算设备的框图。
[0016]图2B示出了根据示例实施例的基于云的服务器系统。
[0017]图3根据示例实施例示出了不具有和具有网格线的示例用户界面的场景。
[0018]图4根据不例实施例不出了与图3的不例用户界面相对应的不例网格、约束和图。
[0019]图5根据示例实施例示出了图4所示的示例图的初始和最终图。
[0020]图6A和6B根据示例实施例示出了基于图5的最终图中的值的示例用户界面。
[0021]图6C、6D和6E根据示例实施例示出了基于图3的示例用户界面的高度约束的示例用户界面。
[0022]图7A和7B根据示例实施例示出了另一场景,其中包括示例网格中的值的范围的指定,以及相应的约束、最终图和用户界面。
[0023]图8是根据示例实施例的方法的流程图。
[0024]图9是根据示例实施例的方法的流程图。
[0025]图10是根据示例实施例的方法的流程图。
[0026]图11是根据示例实施例的方法的流程图。
[0027]图12是根据示例实施例的方法的流程图。
[0028]图13是根据示例实施例的方法的流程图。
[0029]图14是根据示例实施例的方法的流程图。
[0030]图15是根据示例实施例的方法的流程图。【具体实施方式】
[0031]概述
[0032]随着支持计算应用的设备的类型的种类增加,设计能够支持这些设备的灵活的布局管理器的挑战也相应地增加了。例如,可能希望软件应用能够在不同类型的移动电话、平板计算机和/或数字电视上恰当地操作。
[0033]然而,这些设备支持的显示大小和显示分辨率(例如,像素密度)可能大不相同。移动电话可具有从208x208以下那么小到960x640以上那么大的显示分辨率(这里,m χ η的显示分辨率一般指的是设备上的显示屏幕支持水平方向上m像素和垂直方向上η像素)。平板计算机可支持从768x480以下那么小到1280x1024以上的显示分辨率。现代的高清晰度数字电视支持许多显示分辨率,一些超过了 1920x1080。
[0034]由于显示分辨率的这种极大的多样性,所以即使在所有可能设备的子集上促进具有一致格式的应用用户界面布局也是有挑战性的。尤其有挑战性的是设计能够支持在具有更小屏幕分辨率的设备上恰当显示用户界面布局的布局管理器。
[0035]在一些布局管理器中,设计布局策略涉及指定并随后确定:(i)组件内的水平和/或垂直对齐,以及(ii)容器内的组件的固定或可改变的“灵活性”。组件的灵活性可用于指示组件的大小在至少一个维度上能够被调整以便将组件适配在组件的显示内的程度。布局管理器随后可收集容器矩形内的每个组件的大小、对齐和灵活性要求以基于这些组件的位置和大小来产生用户界面。然后,应用可利用布局的用户界面来允许用户与应用的其余部分交互。
[0036]本公开涉及基于解决由布局为容器矩形内的一个或多个矩形组件指定的一系列约束来生成用户界面显示。布局可将容器矩形在逻辑上划分成行和列,包含的矩形组件沿着这些行和列布置。一般来说,可将组件定义为占据容器矩形的多于一行和/或多于一列,只要这些行和列是毗邻的。这种组件的指定通常是按照起始行或列index (索引)和span(跨度)来指示的一垂直轴以行索引和行跨度指定,而水平轴以列索引和列跨度指定。
[0037]“单元群组”被定义为沿着X轴和Y轴由start (开始)和end (结束)索引定界的一组单元:总共四个数字。例如,如果想要一个占据被分割成5列和5行的用户界面的整个最顶行的组件,则可利用以下四个数字在布局内指定最顶行的单元群组:
[0038]rowStart (开始行)=0
[0039]rowEnd (结束行)=1
[0040]CoIumnStart (开始列)=0
[0041]columnEnd (结束列)=5
[0042]在所公开的布局系统中,这些数字可标识将容器矩形分成行和列的“网格线”。可以按照start索引和span或者一对start和end索引来指定这些行和列。例如,当定义容器内的四列时,定义这四列的网格线可被称为X0、X1、X2、X3和X4。类似地,定义四行的网格线可被标注为Y0、Y1、Y2、Y3和Y4。组件和容器矩形都可利用这些标注来定义;例如,容器矩形具有从XO跨越到Χ4的列和从YO跨越到Υ4的行。
[0043]标注列的网格线的索引可按“正常顺序”在查看区域中出现;即,XO — Xl — Χ2 — Χ3 — Χ4。行的相应正常顺序条件是YO — Yl — Υ2 — Υ3 — Υ4。然而,对于一些组件放弃正常顺序条件可允许网格线在受容器矩形控制的空间的一部分或全部上自由移动并产生一个强大得多的系统。其使得可能具有负的行高度和/或列宽度。例如,对于不可见组件指定负的行高度和/或列宽度可使得布局系统能够找到更好地适配其内容的布局解决方案。
[0044]利用网格线来指定组件和容器矩形允许了转换到用于针对网格线指定像素位置的一系列约束。例如,如果一组件在χ维由网格线Xl至X3指定并且必须正好是200像素宽,则对于此组件在χ维指定的相应约束是X3 -Xl=200。如果该组件在y维由网格线Y2和Y3指定并且高度必须在150到200像素之间,则可以使用两个相应的约束来指定行条件:Y2 - Y3 ≥-200 并且 Y3-Y2 ≥ 150。
[0045]在一些实施例中,可以指定具有一个维度或多于两个维度的组件和容器。然而,在每个维度上,可以使用一对数字来定义该维度内的开始位置和结束位置;从而,要指定N个维度的组件,可以使用2N个数字。
[0046]然后可以利用线性编程或其他算法来解决该组约束。在一个实施例中,可将该组约束转换成相应的图。对于该图可以解决“单源路径长度问题”(single-sourcepath-length problem)以确定每条网格线相对于源网格线的位置。单源路径长度问题的示例包括找出单个源节点与图中的其他节点之间的最短路径的“单源最短路径问题”和找出单个源节点与图中的其他节点之间的最长路径的“单源最长路径问题”。布局系统可使用这些位置来指定容器矩形内的网格线的位置,并且利用定位的网格线来生成容器矩形内的组件中的至少一些的显示。
[0047]解决单源路径长度问题的一种算法是贝尔曼-福特(Bellman-Ford)算法。在本公开的一个方面中,这里公开的贝尔曼-福特算法变体的一种实现方式可以用O (IE I)的平均运行时间解决单源路径长度问题,其中|E| =该图中与该组约束相对应的弧(边缘)的数目。在一些特定方面中,图可以是有向图。在其他特定方面中,这里公开的贝尔曼-福特算法变体的实现方式可识别并去除图中表示无效约束的弧。
[0048]布局系统接受布局的简化指定,这些简化指定不要求对灵活性约束的明确指定。(如上所述,组件的灵活性指的是组件的大小在至少一个维度上能够被调整多少以便将组件适配在组件的显示中)。在声明性系统和传统的面向对象的系统中,用户通常可以选择完全不声明重力。公开的系统可利用未定义的状态来推断组件在一行或列内的灵活性。如果为组件定义了水平或垂直对齐,则可以认为组件的灵活性是灵活的,因为已经定义了对于额外的空间会发生什么。在没有明确定义“重力”或者水平/垂直对齐的情况下,系统可作出相反的推断:单元的大小由其包含的组件——例如文本、按钮、显示等等——的大小固定,从而是不灵活的。在像这里描述的Space (空间)组件那样对于给定的组件没有指定大小的另一种情况下,可以认为给定的组件是灵活的。
[0049]为了即使在行和列包含多个组件的情况下也进一步推断行和列的灵活性,可以部署以下两个化简规则:
[0050]规则1:平行元素(例如,在列中对齐的元素)是灵活的,如果所有平行元素都是灵活的话。
[0051]规则2:系列元素(例如,一行中的元素)是灵活的,如果该系列元素之一是灵活的话。通过去除对灵活性的明确指定,布局管理器简化了用户界面设计者和工具对布局的指定。
[0052]布局管理器允许对于与不可见组件相关联的网格线放松行和列的正常顺序条件。正常顺序条件的放松在一些情况下可使得即使当容器矩形比正常顺序条件下所要求的更小时也能够完整显示用户界面。另外,在这里公开的实施例中,布局管理器利用高效的算法来迅速地操作,从而使能了用户界面的迅速的调整大小和重绘制操作。
[0053]示例数据网络
[0054]转到附图,图1示出了被配置为经由网络106与可编程设备104a、104b和104c通信的服务器设备108、110。网络106可对应于LAN、广域网(wide area network,WAN)、公司内联网、公共因特网、或者任何其他类型的被配置为在联网的计算设备之间提供通信路径的网络。网络106也可对应于一个或多个LAN、WAN、公司内联网和/或公共因特网的组合。
[0055]虽然图1只示出了三个可编程设备,但分布式应用体系结构可为数十、数百或数千的可编程设备服务。另外,可编程设备104a、104b和104c (或任何额外的可编程设备)可以是任何种类的计算设备,例如普通的膝上型计算机、桌面型计算机、网络终端、无线通信设备(例如蜂窝电话或智能电话),等等。在一些实施例中,可编程设备104a、104b和104c可专用于软件应用的设计和使用。在其他实施例中,可编程设备104a、104b和104c可以是被配置为执行多个任务并且不需要专用于软件开发工具的通用计算机。
[0056]服务器设备108、110可被配置为按照可编程设备104a、104b和/或104c的请求执行一个或多个服务。例如,服务器设备108和/或110可向可编程设备104a-104c提供内容。内容可包括但不限于网页、超文本、脚本、诸如编译的软件之类的二进制数据、图像、音频和/或视频。内容可包括压缩的和/或未压缩的内容。内容可被加密和/或解密。其他类型的内容也是可能的。
[0057]作为另一示例,服务器设备108和/或110可向可编程设备104a_104c提供对用于数据库、搜索、计算、图形、音频、视频、万维网/因特网利用和/或其他功能的软件的访问。服务器设备的许多其他示例也是可能的。
[0058]计算设备体系结构
[0059]图2A是根据示例实施例的计算设备(例如系统)的框图。具体地,图2A所示的计算设备200可被配置为执行服务器设备108、110、网络106和/或可编程设备104a、104b和104c中的一个或多个的一个或多个功能。计算设备200可包括用户接口模块201、网络通信接口模块202、一个或多个处理器203和数据存储装置204,所有这些都可经由系统总线、网络或其他连接机制205链接在一起。
[0060]用户接口模块201可操作来向外部用户输入/输出设备发送和/或从外部用户输入/输出设备接收数据。例如,用户接口模块201可被配置为向用户输入设备发送和/或从用户输入设备接收数据,用户输入设备例如是键盘、小键盘、触摸屏、计算机鼠标、轨迹球、操纵杆、相机、语音识别模块和/或其他类似的设备。用户接口模块201还可被配置为向用户显示设备提供输出,用户显示设备例如是一个或多个阴极射线管(cathode ray tube,CRT)、液晶显不器(liquid crystal display,LCD)、发光二极管(light emitting diode,LED)、使用数字光处理(digital light processing, DLP)技术的显示器、打印机、灯泡和/或现在已知或以后开发的其他类似设备。用户接口模块201还可被配置为生成可听输出,例如扬声器、扬声器插孔、音频输出端口、音频输出设备、耳机和/或其他类似的设备。特别地,具有用户接口模块201的计算设备200可用于显示用户界面,该用户界面包括容器矩形内的一个或多个组件。
[0061]网络通信接口模块202可包括一个或多个无线接口 207和/或一个或多个有线接口 208,这些无线接口 207和有线接口 208可配置为经由网络通信,例如图1所示的网络106。无线接口 207可包括一个或多个无线发送器、接收器和/或收发器,例如蓝牙收发器、Zigbee收发器、W1-Fi收发器、WiMAX收发器、和/或可配置为经由无线网络通信的其他类似类型的无线收发器。有线接口 208可包括一个或多个有线发送器、接收器和/或收发器,例如以太网收发器、通用串行总线(Universal Serial Bus,USB)收发器、或者可配置为经由双绞线、同轴电缆、光纤链路或到有线网络的类似物理连接来通信的类似的收发器。
[0062]在一些实施例中,网络通信接口模块202可被配置为提供可靠的、安全的和/或经认证的通信。对于这里描述的每个通信,可以提供用于确保可靠通信的信息(有保证消息递送),可能作为消息头部和/或尾部的一部分提供(例如,分组/消息排序信息、封装头部和/或尾部、大小/时间信息、以及诸如CRC和/或奇偶校验值之类的传输验证信息)。可以利用一个或多个密码协议和/或算法来对通信加以保护(例如编码或加密)和/或解密/解码,这些密码协议和/或算法例如但不限于是DES、AES、RSA、Diffie-Hellman和/或DSA。除了这里列出的那些之外也可使用其他密码协议和/或算法来对通信进行保护(然后进行解密/解码)。
[0063]处理器203可包括一个或多个通用处理器和/或一个或多个专用处理器(例如,数字信号处理器、专用集成电路,等等)。处理器203可被配置为执行包含在数据存储装置204中的计算机可读程序指令206a和/或如这里所述的其他指令。
[0064]数据存储装置204可包括可被至少一个处理器203读取和/或访问的一个或多个计算机可读存储介质。一个或多个计算机可读存储介质可包括易失性和/或非易失性存储组件,例如光学、磁性、有机或者其他存储器或盘存储装置,它们可以全部或部分与至少一个处理器203集成。在一些实施例中,数据存储装置204可利用单个物理设备(例如,一个光学、磁性、有机或其他存储器或盘存储单元)来实现,而在其他实施例中,数据存储装置204可利用两个或更多个物理设备来实现。
[0065]数据存储装置204可包括计算机可读程序指令206a、实际环境206b以及可能额外的数据。实际环境206b可存储被软件应用的一个或多个进程和/或线程使用的数据中的至少一些。在一些实施例中,数据存储装置204还可包括执行这里描述的方法和技术的至少一部分和/或这里描述的设备和网络的功能的至少一部分所需要的存储装置。
[0066]基于云的服务器
[0067]图2B描绘了根据示例实施例布置为基于云的服务器系统的计算集群209a、209b、209c的网络106。服务器设备108和/或110可以是存储基于云的应用和/或服务的程序逻辑和/或数据的基于云的设备。在一些实施例中,服务器设备108和/或110可以是驻留在单个计算中心中的单个计算设备。在其他实施例中,服务器设备108和/或110可包括单个计算中心中的多个计算设备,或者甚至在位于多个不同地理位置的多个计算中心中的多个计算设备。例如,图1描绘了服务器设备108和110中的每一个驻留在不同的物理位置。
[0068]在一些实施例中,服务器设备108和/或110处的数据和服务可被编码为存储在有形计算机可读介质(或计算机可读存储介质)中并可被可编程设备104a、104b和104c和/或其他计算设备访问的计算机可读信息。在一些实施例中,服务器设备108和/或110处的数据可存储在单个盘驱动器或其他有形存储介质上,或者可实现在位于一个或多个不同地理位置的多个盘驱动器或其他有形存储介质上。
[0069]图2B描绘了根据示例实施例的基于云的服务器系统。在图2B中,服务器设备108和/或110的功能可分布在三个计算集群209a、209b和209c之间。计算集群209a可包括由本地集群网络212a连接的一个或多个计算设备200a、集群存储阵列210a和集群路由器211a。类似地,计算集群20%可包括由本地集群网络212b连接的一个或多个计算设备200b、集群存储阵列210b和集群路由器211b。类似地,计算集群209c可包括由本地集群网络212c连接的一个或多个计算设备200c、集群存储阵列210c和集群路由器211c。
[0070]在一些实施例中,计算集群209a、209b和209c中的每一个可具有相等数目的计算设备、相等数目的集群存储阵列和相等数目的集群路由器。然而,在其他实施例中,每个计算集群可具有不同数目的计算设备、不同数目的集群存储阵列和不同数目的集群路由器。每个计算集群中的计算设备、集群存储阵列和集群路由器的数目可取决于指派给每个计算集群的一个或多个计算任务。
[0071]例如,在计算集群209a中,计算设备200a可被配置为执行电子通信服务器112的各种计算任务。在一个实施例中,电子通信服务器112的各种功能可分布在计算设备200a、200b和200c中的一个或多个之间。计算集群209b和209c中的计算设备200b和200c可与计算集群209a中的计算设备200a类似地来配置。另一方面,在一些实施例中,计算设备200a、200b和200c可被配置为执行不同的功能。
[0072]在一些实施例中,与服务器设备108和/或110相关联的计算任务和存储数据可至少部分基于服务器设备108和/或110的处理要求、计算设备200a、200b和200c的处理能力、每个计算集群中的计算设备之间和计算集群本身之间的网络链路的延迟和/或可对整个系统体系结构的成本、速度、容错、弹性、效率和/或其他设计目标作出贡献的其他因素,来分布在计算设备200a、200b和200c上。
[0073]计算集群209a、209b和209c的集群存储阵列210a、210b和210c可以是数据存储阵列,这些数据存储阵列包括被配置为管理对硬盘驱动器群组的读取和写入访问的盘阵列控制器。盘阵列控制器单独地或者与其各自的计算设备相联合也可被配置为管理集群存储阵列中存储的数据的备份或冗余拷贝,以针对可妨碍一个或多个计算设备访问一个或多个集群存储阵列的盘驱动器或其他集群存储阵列故障和/或网络故障加以保护。
[0074]与服务器设备108和/或110的功能分布在计算集群209a、209b和209c的计算设备200a、200b和200c上的方式类似,这些组件的各种活动部分和/或备份部分可分布在集群存储阵列210a、210b和210c上。例如,一些集群存储阵列可被配置为存储服务器设备108的数据,而其他集群存储阵列可存储服务器设备110的数据。此外,一些集群存储阵列可被配置为存储其他集群存储阵列中存储的数据的备份版本。
[0075]计算集群209a、209b和209c中的集群路由器211a、211b和211c可包括被配置为为计算集群提供内部和外部通信的联网设备。例如,计算集群209a中的集群路由器211a可包括一个或多个互联网交换和路由设备,这些设备被配置为提供:(i)计算设备200a与集群存储阵列210a之间经由本地集群网络212a的局域网通信,以及(ii)计算集群209a与计算集群209b和209c之间经由到网络106的广域网连接213a的广域网通信。集群路由器211b和211c可包括与集群路由器211a类似的网络设备,并且集群路由器211b和211c可为计算集群20%和209c执行与集群路由器211a为计算集群209a执行的类似的联网功倉泛。
[0076]在一些实施例中,集群路由器211a、211b和211c的配置可至少部分基于计算设备和集群存储阵列的数据通信要求、集群路由器211a、211b和211c中的网络设备的数据通信能力、本地网络212a、212b、212c的延迟和吞吐量、广域网链接213a、213b和213c的延迟、吞吐量和成本、和/或可对适当系统体系结构的成本、速度、容错、弹性、效率和/或其他设计目标作出贡献的其他因素。
[0077]示例布局
[0078]图3根据一实施例描绘了关于示例用户界面310的场景300。定义可利用诸如计算设备200之类的计算设备显示的用户界面310的示例布局在以下表I中示出。
[0079]
【权利要求】
1.一种方法,包括: 在计算设备处接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件,其中每个矩形组件具有至少一个维度上的至少一个大小; 所述计算设备从所述布局确定多条网格线,所述一组矩形组件中的每个矩形组件与所述多条网格线中的至少两条网格线相关联,所述至少两条网格线是基于该矩形组件的至少一个大小的; 所述计算设备生成约束的系统,所述约束的系统包括最小约束和最大约束,其中所述约束的系统的每个约束与所述多条网格线中的至少两条网格线相关,其中所述约束的系统的最小约束指定至少两条网格线之间的最小值,并且其中所述约束的系统的最大约束指定至少两条网格线之间的最大值; 所述计算设备解决所述约束的系统以为所述多条网格线中的每条网格线确定该网格线的位置;以及 所述计算设备基于网格线的位置来生成所述一组矩形组件中的至少一些矩形组件的显不O
2.如权利要求1所述的方法,其中,所述最小约束和最大约束两者与所述一组矩形组件中的单个矩形组件相关联,所述单个矩形组件与所述多条网格线中的第一网格线和所述多条网格线中的第二网格线相关联。
3.如权利要求2所述的方法,其中,所述最小约束包括对于所述单个矩形组件的关于最小值的约束,并且 其中,所述最大约束包括对于所述单个矩形组件的关于最大值的约束。
4.如权利要求2所述的方法,其中,解决所述约束的系统以为所述多条网格线中的每条网格线确定该网格线的位置包括: 生成包括多个节点和多个边缘的图,其中所述多个节点对应于所述多条网格线,其中所述多个边缘对应于所述约束的系统; 其中,所述多个边缘中的至少最小边缘和最大边缘分别与所述约束的系统的所述最小约束和所述最大约束相关联,并且 其中,所述最小边缘具有第一方向,并且所述最大边缘具有不同于所述第一方向的第二方向。
5.如权利要求4所述的方法,其中所述多个节点中的第一节点对应于所述第一网格线,其中所述多个节点中的第二节点对应于所述第二网格线,其中所述最小边缘是从所述第一节点到所述第二节点的正向边缘,并且其中所述最大边缘是从所述第二节点到所述第一节点的反向边缘。
6.如权利要求5所述的方法,其中,解决所述约束的系统以为所述多条网格线中的每条网格线确定该网格线的位置包括: 为所述第一节点确定第一节点权重; 为所述第二节点确定第二节点权重;以及 确定在所述最小值与所述最大值之间的所述第二节点权重与所述第一节点权重之间的差异。
7.如权利要求6所述的方法,其中,基于网格线的位置来生成所述一组矩形组件中的至少一些矩形组件的显示包括: 基于所述第一节点权重来确定第一位置并基于所述第二节点权重来确定第二位置;以及 在所述显示中在所述第一位置和所述第二位置之间显示所述单个矩形组件。
8.如权利要求4所述的方法,还包括: 将所述多个边缘分成至少第一部分边缘和第二部分边缘,其中所述最小边缘在所述第一部分中,并且其中所述最大边缘在所述第二部分中,其中所述第一部分中的每个边缘在所述第一方向上,并且其中所述第二部分中的每个边缘在所述第二方向上。
9.如权利要求8所述的方法,还包括: 对所述第一部分边缘排序; 与所述第一部分边缘分开地对所述第二部分边缘排序;以及 合并所述第一部分边缘和第二部分边缘。
10.如权利要求9所述的方法,还包括: 生成所述多个边缘的排序,其中所述第一部分边缘中的每个边缘先于所述第二部分边缘中的每个边缘;并且其中 合并所述第一部分边缘和第二部分边缘包括将所述第一部分边缘和第二部分边缘合并成边缘的合并列表,使得所述合并列表中的所述第一部分中的每个边缘在所述合并列表中先于所述第二部分边缘的所有边缘。
11.如权利要求10所述的方法,其中,解决所述约束的系统包括利用在所述合并列表上操作的贝尔曼-福特算法的变体来解决单源路径长度问题。
12.—种计算设备,包括: 处理器;以及 数据存储装置,被配置为至少存储计算机可读程序指令,其中所述指令被配置为在被所述处理器执行时使得所述计算设备执行功能,所述功能包括: 接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件,其中每个矩形组件具有至少一个维度上的至少一个大小; 从所述布局确定多条网格线,其中所述一组矩形组件中的每个矩形组件与所述多条网格线中的至少两条网格线相关联,所述至少两条网格线是基于该矩形组件的至少一个大小的; 生成约束的系统,所述约束的系统包括最小约束和最大约束,其中所述约束的系统的每个约束与所述多条网格线中的至少两条网格线相关,并且其中所述约束的系统的最小约束指定至少两条网格线之间的最小值,并且其中所述约束的系统的最大约束指定至少两条网格线之间的最大值; 解决所述约束的系统以为所述多条网格线中的每条网格线确定该网格线的位置;以及 基于网格线的位置来生成所述一组矩形组件中的至少一些矩形组件的显示。
13.如权利要求12所述的计算设备,其中,所述最小约束和最大约束两者与所述一组矩形组件中的单个矩形组件相关联,所述单个矩形组件与所述多条网格线中的第一网格线和所述多条网格线中的第二网格线相关联。
14.如权利要求13所述的计算设备,其中,所述最小约束包括对于所述单个矩形组件的关于最小值的约束,并且其中,所述最大约束包括对于所述单个矩形组件的关于最大值的约束。
15.如权利要求13所述的计算设备,其中,解决所述约束的系统包括: 生成包括多个节点和多个边缘的图,其中所述多个节点对应于所述多条网格线,并且其中所述多个边缘对应于所述约束的系统; 其中,所述多个边缘中的至少最小边缘和最大边缘分别与所述约束的系统的所述最小约束和所述最大约束相关联,并且 其中,所述最小边缘具有第一方向,并且所述最大边缘具有不同于所述第一方向的第二方向。
16.如权利要求15所述的计算设备,其中所述多个节点中的第一节点对应于所述第一网格线,其中所述多个节点中的第二节点对应于所述第二网格线,其中所述最小边缘是从所述第一节点到所述第二节点的正向边缘,并且其中所述最大边缘是从所述第二节点到所述第一节点的反向边缘。
17.如权利要求16所述的计算设备,其中,解决所述约束的系统包括: 为所述第一节点确定第一节点权 重; 为所述第二节点确定第二节点权重;以及 确定在所述最小值与所述最大值之间的所述第二节点权重与所述第一节点权重之间的差异。
18.如权利要求17所述的计算设备,其中,生成所述显示包括: 基于所述第一节点权重来确定第一位置并基于所述第二节点权重来确定第二位置;以及 在所述显示中在所述第一位置和所述第二位置之间显示所述单个矩形组件。
19.如权利要求15所述的计算设备,其中,所述功能还包括: 将所述多个边缘分成至少第一部分边缘和第二部分边缘,其中所述最小边缘在所述第一部分中,并且其中所述最大边缘在所述第二部分中,其中所述第一部分中的每个边缘在所述第一方向上,并且其中所述第二部分中的每个边缘在所述第二方向上。
20.如权利要求19所述的计算设备,其中,所述功能还包括: 对所述第一部分边缘排序; 与所述第一部分边缘分开地对所述第二部分边缘排序;以及 合并所述第一部分边缘和第二部分边缘。
21.如权利要求20所述的计算设备,其中,所述功能还包括: 生成所述多个边缘的排序,其中所述第一部分边缘中的每个边缘先于所述第二部分边缘中的每个边缘;并且其中合并所述第一部分边缘和第二部分边缘包括将所述第一部分边缘和第二部分边缘合并成边缘的合并列表,使得所述合并列表中的所述第一部分中的每个边缘在所述合并列表中先于所述第二部分边缘的所有边缘,并且 其中,解决所述约束的系统包括利用在所述合并列表上操作的贝尔曼-福特算法的变体来解决单源路径长度问题。
22.—种制品,包括存储有指令的非暂态计算机可读存储介质,所述指令响应于被处理器执行而使得所述处理器执行功能,所述功能包括: 接收布局,该布局被配置为指定容器矩形内的至少一组矩形组件,其中每个矩形组件具有至少一个维度上的至少一个大小; 从所述布局确定多条网格线,其中所述一组矩形组件中的每个矩形组件与所述多条网格线中的至少两条网格线相关联,所述至少两条网格线是基于该矩形组件的至少一个大小的; 生成约束的系统,所述约束的系统包括最小约束和最大约束,其中所述约束的系统的每个约束与所述多条网格线中的至少两条网格线相关,并且其中所述约束的系统的最小约束指定至少两条网格线之间的最小值,并且其中所述约束的系统的最大约束指定至少两条网格线之间的最大值; 解决所述约束的系统以为所述多条网格线中的每条网格线确定该网格线的位置;以及 基于网格线的位置来生成所述一组矩形组件中的至少一些矩形组件的显示。
23.如权利要求22所述的制品,其中所述最小约束和最大约束两者与所述一组矩形组件中的单个矩形组件相关联,所述单个矩形组件与所述多条网格线中的第一网格线和所述多条网格线中的第二网格线相关联,其中所述最小约束包括对于所述单个矩形组件的关于最小值的约束,并且其中所述最大约束包括对于所述单个矩形组件的关于最大值的约束。
24.如权利要求23所述的制品,其中,解决所述约束的系统包括: 生成包括多个节点和多个边缘的图,其中所述多个节点对应于所述多条网格线,并且其中所述多个边缘对应于所述约束的系统; 其中,所述多个边缘中 的至少最小边缘和最大边缘分别与所述约束的系统的所述最小约束和所述最大约束相关联,并且 其中,所述最小边缘具有第一方向,并且所述最大边缘具有不同于所述第一方向的第二方向。
25.如权利要求24所述的制品,其中所述多个节点中的第一节点对应于所述第一网格线,其中所述多个节点中的第二节点对应于所述第二网格线,其中所述最小边缘是从所述第一节点到所述第二节点的正向边缘,并且其中所述最大边缘是从所述第二节点到所述第一节点的反向边缘。
26.如权利要求25所述的制品,其中,解决所述约束的系统包括: 为所述第一节点确定第一节点权重; 为所述第二节点确定第二节点权重;以及 确定在所述最小值与所述最大值之间的所述第二节点权重与所述第一节点权重之间的差异。
27.如权利要求26所述的制品,其中,生成所述显示包括: 基于所述第一节点权重来确定第一位置并基于所述第二节点权重来确定第二位置;以及 在所述显示中在所述第一位置和所述第二位置之间显示所述单个矩形组件。
28.如权利要求24所述的制品,其中,所述功能还包括: 将所述多个边缘分成至少第一部分边缘和第二部分边缘,其中所述最小边缘在所述第一部分中,并且其中所述最大边缘在所述第二部分中,其中所述第一部分中的每个边缘在所述第一方向上,并且其中所述第二部分中的每个边缘在所述第二方向上。
29.如权利要求28所述的制品,其中,所述功能还包括:对所述第一部分边缘排序; 与所述第一部分边缘分开地对所述第二部分边缘排序;以及 合并所述第一部分边缘和第二部分边缘。
30.如权利要求29所述的制品,其中,所述功能还包括: 生成所述多个边缘的排序,其中所述第一部分边缘中的每个边缘先于所述第二部分边缘中的每个边缘;并且其中合 并所述第一部分边缘和第二部分边缘包括将所述第一部分边缘和第二部分边缘合并成边缘的合并列表,使得所述合并列表的所述第一部分中的每个边缘在所述合并列表中先于所述第二部分边缘的所有边缘,并且 其中,解决所述约束的系统包括利用在所述合并列表上操作的贝尔曼-福特算法的变体来解决单源路径长度问题。
【文档编号】G06F9/44GK103959243SQ201280048261
【公开日】2014年7月30日 申请日期:2012年9月28日 优先权日:2011年9月30日
【发明者】P.米尔恩 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1