【问题标题】:Writing a code for a path graph in Pari/GP在 Pari/GP 中为路径图编写代码
【发布时间】:2019-09-09 10:01:56
【问题描述】:

我正在尝试为 Pari 中 n 个顶点上的路径图的邻接矩阵编写一个矩阵。为了清楚起见,当我说图 P_n 时,我指的是具有 n 个顶点和 n-1 条边的图。

到目前为止,我已经设法针对特定情况执行此操作:

path2=matrix(2,2,i,j);for(i=1,2-1,path2[i,i+1]=1);for(i=2,2,path2[i,i-1]=1);path2

path3=matrix(3,3,i,j);for(i=1,3-1,path3[i,i+1]=1);for(i=2,3,path3[i,i-1]=1);path3

等等

但是,我想要一个可以选择路径长度的代码。类似于path(n)=...。当我用上面的代码尝试这个时,我得到以下信息:

path(n)=matrix(n,n,i,j);for(i=1,n-1,path(n)[i,i+1]=1);for(i=2,n,path(n)[i,i-1]=1);path(n)
  ***   expected character: ',' or ')' instead of: ...or(i=1,n-1,path(n)[i,i+1]
  ***   =1);for(i=2,n,path(n)
  ***   ^---------------------

我不确定这是否是写这篇文章的正确方法,我错过了一些微妙的东西,或者我是否应该为此做一些不同的事情。任何帮助将不胜感激!

【问题讨论】:

    标签: graph-theory adjacency-matrix pari pari-gp


    【解决方案1】:

    完成您想要完成的任务的最简单方法是:

    path(n)={matrix(n,n,i,j,abs(i-j)==1)}
    

    您收到错误的原因是您似乎对变量和函数有误解。您的代码的正确实现是:

    path(n)={my(adj=matrix(n,n,i,j)); for(i=1,n-1, adj[i,i+1]=1); for(i=2,n,adj[i,i-1]=1); adj}
    

    这定义了一个名为path 的函数。在这个函数内部,声明了一个名为adj 的局部变量,然后代码会填写该变量。在函数结束时,返回adj。请注意,函数中的最终表达式是返回的内容 - 无需使用显式 return 语句。

    但是,正如我的第一个建议所示,通过使用语言的函数功能,通常可以轻松避免大量代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2014-03-10
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多