分页: 1 / 4

如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-09 18:03
njutwc
大家好,现有个问题期待大家共同讨论,比如指定四个球,我们可以得到如图所示四种平面图形组合。线性的长链,单个四原环,一个三元环,两个三元环这样的图形。如果球的个数增加,比如增加到8个,则又多少平面图形组合呢?如何具体表达出来?有点难度。谢谢大家。

我先列举几个例子,除了线性,八元环大家都知道的图形以外,图2所示的平面图形也在考虑之内,总之最小的三元环,最大的八元环,都可以自由组合成不同的图形。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-09 22:18
fnan
制图不是shell范围吧?

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-09 22:29
lilydjwg
LZ 把 shell 当成了图论?建议由去~

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-22 19:03
njutwc
fnan 写了:制图不是shell范围吧?
先不说制图的事,能不能用shell表达出不同结构的信息?

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-22 19:04
月下叹逍遥
这个有些难度吧。。。建议使用专业的数学工具,比如fortran或者matlab。。。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-22 20:27
fnan
njutwc 写了:
fnan 写了:制图不是shell范围吧?
先不说制图的事,能不能用shell表达出不同结构的信息?
可以,赋予字符特殊含义,能描述图形。
例子:
q=原生球
Q=再生球
t=图形
b=闭环
k=开环
t1q1q2q3q4k #意味图形1由四个小球组成一直线(开环)。
t2q1q2q3q4b #图形2由四小球组成四边形(闭环)。
t3q1q2kQ2q3q4b #图形3。。。(参考lz的图1.jpg第三图)
#不如图形直观,可用于计算。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-22 20:33
fnan
月下叹逍遥 写了:这个有些难度吧。。。建议使用专业的数学工具,比如fortran或者matlab。。。
lz的问题接触到人工智能了,难度很高,shell是不便,但也可以试试,有兴趣的不妨玩玩,不需保证成功的。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 11:25
njutwc
fnan 写了:
njutwc 写了:
fnan 写了:制图不是shell范围吧?
先不说制图的事,能不能用shell表达出不同结构的信息?
可以,赋予字符特殊含义,能描述图形。
例子:
q=原生球
Q=再生球
t=图形
b=闭环
k=开环
t1q1q2q3q4k #意味图形1由四个小球组成一直线(开环)。
t2q1q2q3q4b #图形2由四小球组成四边形(闭环)。
t3q1q2kQ2q3q4b #图形3。。。(参考lz的图1.jpg第三图)
#不如图形直观,可用于计算。
这样也不错,呵呵。只是得避免重复的可能。要不然到八个球,估计吃不消了。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 15:25
fnan
零起点没法直接用最好优先搜索算法,很多细节不明,lz的图例也没有包含全部结构和反例,只能先暴力搜索解决1到4小球的情况,过了将抽象概念转为实际数据的瓶颈再说。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 20:10
njutwc
fnan 写了:零起点没法直接用最好优先搜索算法,很多细节不明,lz的图例也没有包含全部结构和反例,只能先暴力搜索解决1到4小球的情况,过了将抽象概念转为实际数据的瓶颈再说。
我只是象征性的提供几个图而已,当然不是很全啦,那初步先考虑1-4个球的图的组合,往后再考察多个球的规律。拜托啦

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 21:30
formylove2
你这玩意,去数学吧里先问问算法再说。

这复杂的问题不是SHELL能不能实现,尼玛这东西精髓在算法。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 21:31
formylove2
你想出算法来,我给你写个C程序跑。

我不想动脑筋想算法,累。

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-23 23:42
fnan
时间关系先给个简单框架,大家给给意见,不管对错,慢慢改进:

代码: 全选

#!/bin/bash

unset p[*]  #图形集合副本
unset t[*]  #图形集合
unset s[*]  #图形结构集合
q=0
Q=0
ball=0

while ((++ball));do
if [[ $ball -eq 1 ]];then
	t[1]='q1k'
	continue
elif [[ $ball -gt $1 ]];then  #循环完打印所有图形并退出。
	for i in ${!t[@]};do
		echo "t$i${t[$i]}"
	done
	exit
fi	
#开始计算两个或以上小球的组合结构:
for i in ${!t[@]};do
	p[$i]="${t[$i]}"
done
unset t[*]
p_ind=0
t_ind=0
while ((++p_ind<=${#p[@]}));do
	s=(${p[$p_ind]})  #分解图形结构。
#开始结构进化:
	for i in ${!s[@]};do
		s[$i]="q$ball${s[$i]}"  #线状进化。
		t[$((++t_ind))]="${s[@]}"
		
	done
	
done
done

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-24 10:34
njutwc
fnan 写了:时间关系先给个简单框架,大家给给意见,不管对错,慢慢改进:

代码: 全选

#!/bin/bash

unset p[*]  #图形集合副本
unset t[*]  #图形集合
unset s[*]  #图形结构集合
q=0
Q=0
ball=0

while ((++ball));do
if [[ $ball -eq 1 ]];then
	t[1]='q1k'
	continue
elif [[ $ball -gt $1 ]];then  #循环完打印所有图形并退出。
	for i in ${!t[@]};do
		echo "t$i${t[$i]}"
	done
	exit
fi	
#开始计算两个或以上小球的组合结构:
for i in ${!t[@]};do
	p[$i]="${t[$i]}"
done
unset t[*]
p_ind=0
t_ind=0
while ((++p_ind<=${#p[@]}));do
	s=(${p[$p_ind]})  #分解图形结构。
#开始结构进化:
	for i in ${!s[@]};do
		s[$i]="q$ball${s[$i]}"  #线状进化。
		t[$((++t_ind))]="${s[@]}"
		
	done
	
done
done

乖乖,恁复杂了点,里面还得添点东西,辛苦啦

Re: 如果得到指定个数的球的不同的平面图形组合?

发表于 : 2011-10-24 10:35
njutwc
formylove2 写了:你想出算法来,我给你写个C程序跑。

我不想动脑筋想算法,累。
算法问了N多人了,都不靠谱,关键是在同构上如何排除,要不然个数增加,异构体呈几何级数增加,很恐怖滴