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

sh/bash/dash/ksh/zsh等Shell脚本
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#1

帖子 njutwc » 2011-10-09 18:03

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

我先列举几个例子,除了线性,八元环大家都知道的图形以外,图2所示的平面图形也在考虑之内,总之最小的三元环,最大的八元环,都可以自由组合成不同的图形。
附件
图2.jpg
图1.jpg
图1.jpg (9.92 KiB) 查看 1442 次
fnan
帖子: 919
注册时间: 2009-07-01 22:04

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

#2

帖子 fnan » 2011-10-09 22:18

制图不是shell范围吧?
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#3

帖子 lilydjwg » 2011-10-09 22:29

LZ 把 shell 当成了图论?建议由去~
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#4

帖子 njutwc » 2011-10-22 19:03

fnan 写了:制图不是shell范围吧?
先不说制图的事,能不能用shell表达出不同结构的信息?
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

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

#5

帖子 月下叹逍遥 » 2011-10-22 19:04

这个有些难度吧。。。建议使用专业的数学工具,比如fortran或者matlab。。。
浮生七十今三十,从此凄惶未可知
fnan
帖子: 919
注册时间: 2009-07-01 22:04

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

#6

帖子 fnan » 2011-10-22 20:27

njutwc 写了:
fnan 写了:制图不是shell范围吧?
先不说制图的事,能不能用shell表达出不同结构的信息?
可以,赋予字符特殊含义,能描述图形。
例子:
q=原生球
Q=再生球
t=图形
b=闭环
k=开环
t1q1q2q3q4k #意味图形1由四个小球组成一直线(开环)。
t2q1q2q3q4b #图形2由四小球组成四边形(闭环)。
t3q1q2kQ2q3q4b #图形3。。。(参考lz的图1.jpg第三图)
#不如图形直观,可用于计算。
上次由 fnan 在 2011-10-22 20:54,总共编辑 1 次。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

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

#7

帖子 fnan » 2011-10-22 20:33

月下叹逍遥 写了:这个有些难度吧。。。建议使用专业的数学工具,比如fortran或者matlab。。。
lz的问题接触到人工智能了,难度很高,shell是不便,但也可以试试,有兴趣的不妨玩玩,不需保证成功的。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#8

帖子 njutwc » 2011-10-23 11:25

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

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

#9

帖子 fnan » 2011-10-23 15:25

零起点没法直接用最好优先搜索算法,很多细节不明,lz的图例也没有包含全部结构和反例,只能先暴力搜索解决1到4小球的情况,过了将抽象概念转为实际数据的瓶颈再说。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#10

帖子 njutwc » 2011-10-23 20:10

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

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

#11

帖子 formylove2 » 2011-10-23 21:30

你这玩意,去数学吧里先问问算法再说。

这复杂的问题不是SHELL能不能实现,尼玛这东西精髓在算法。
formylove2
帖子: 105
注册时间: 2008-11-03 10:06

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

#12

帖子 formylove2 » 2011-10-23 21:31

你想出算法来,我给你写个C程序跑。

我不想动脑筋想算法,累。
fnan
帖子: 919
注册时间: 2009-07-01 22:04

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

#13

帖子 fnan » 2011-10-23 23:42

时间关系先给个简单框架,大家给给意见,不管对错,慢慢改进:

代码: 全选

#!/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
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#14

帖子 njutwc » 2011-10-24 10:34

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

乖乖,恁复杂了点,里面还得添点东西,辛苦啦
njutwc
帖子: 24
注册时间: 2011-10-09 17:57

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

#15

帖子 njutwc » 2011-10-24 10:35

formylove2 写了:你想出算法来,我给你写个C程序跑。

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