Java 是否可以使用分形计算软件的复杂性?

Java 是否可以使用分形计算软件的复杂性?,java,.net,algorithm,complexity-theory,Java,.net,Algorithm,Complexity Theory,有没有关于.net或java的具体想法?分形维数代表复杂性。分形由其他分形组成。如果软件模块可以以某种方式被视为分形,那么这是可能的吗 更新:找到此文件,但没有访问权限。有人知道吗 计算分维-大型软件系统的全局度量 当然这是一个全新的范例,所以我的问题是:你会怎么做 最后有一些有趣的建议。直观地说,我认为分形维数可以更好地衡量更接近人类感受的复杂性,而不是像cycloblahblahblah这样的度量,后者太接近低级机器操作。你想用分形维数计算四叉树。四叉树可以看作是一条空间填充曲线,递归地将

有没有关于.net或java的具体想法?分形维数代表复杂性。分形由其他分形组成。如果软件模块可以以某种方式被视为分形,那么这是可能的吗

更新:找到此文件,但没有访问权限。有人知道吗

计算分维-大型软件系统的全局度量

当然这是一个全新的范例,所以我的问题是:你会怎么做


最后有一些有趣的建议。直观地说,我认为分形维数可以更好地衡量更接近人类感受的复杂性,而不是像cycloblahblahblah这样的度量,后者太接近低级机器操作。

你想用分形维数计算四叉树。四叉树可以看作是一条空间填充曲线,递归地将曲面细分为更小的分片。有分形维数为2的sfc,这意味着它将2d复杂度降低为1d复杂度。你想寻找Nick的hilbert曲线空间索引四叉树。

分形维数的概念在蹩脚的普通英语中(AFAIK):如果我把一个对象的基本长度增加两倍,分形会变大多少。点、线、圆、球体这些琐碎的情况会导致因子1、2、4、8(使用二阶数学精灵尘埃)转化为维度0、1、2、3

对于类似分形的对象(海绵、海岸线等),结果得到的是有理数

如果要将此应用于软件,必须定义三件事:

  • “基本长度”是多少
  • 源代码的大小是多少
  • 如何“使基本长度增加一倍”
我认为有很多选择可能是有意义的:

我个人目前最喜欢的是这种组合 -类文件数 -LOC -等待项目按需要增长,或者使用版本控制系统查看处于不同阶段的系统

另一种选择是使用不同的项目,以获得不同规模的“措施”。因此,您可以将java项目的维度与用C实现的项目进行比较

顺便说一句:这篇文章并没有那么贵

------------------更新------------------------- 不同的想法

有一种叫做“盒子计数”的方法(http://en.wikipedia.org/wiki/Box-counting_dimension). 您可以将源代码解释为一棵树。例如方法+类+字段的节点。边是类似于“引用”的关系。在此图形上应用图形布局算法。在结果上使用了一种盒计数算法


不知道这是稳定的(当您稍微更改代码时不会有太大变化)还是有任何有用的属性。但这肯定是一个有趣的实验

对不起,你什么意思?请详细说明。分形维数代表复杂性。分形由其他分形组成。如果软件模块可以以某种方式被视为分形,这是可能的?发现了这一点,但无法访问其内容:计算分形维数-大型软件系统的全局度量分形复杂度分析在java中通常不使用。大多数IDE都会执行圈分析来测量复杂度。:)你有这个吗想在半夜之后摄入任何物质都有可能吗?有趣的问题,虽然我还不知道如何回答……谢谢,这是一个很好的起点:)。这篇文章不是很贵,但我担心它太学术了,我无法理解或应用!一条希尔伯特曲线的分维是2。@墓志铭不知道,也不明白这句话的意义?如果这是引起混淆的原因:对于直线,我指的是一条有限长度的简单直线是的,但我用分形维数0,1,2,3来交换因子1,2,4,8。也许这是一个有点混乱的描述?