SCDNG PELER
Server IP : 162.241.126.129  /  Your IP : 18.188.233.69
Web Server : Apache
System : Linux 162-241-126-129.cprapid.com 4.18.0-477.27.2.el8_8.x86_64 #1 SMP Fri Sep 29 08:21:01 EDT 2023 x86_64
User : rvway5nu4 ( 1018)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/graphviz/gvpr/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /usr/share/graphviz/gvpr/binduce
/* Given a bipartite graph, induce a non-bipartite graph.
 * argv[0]="name=value" This is used to identify the nodes used
 * to induce edges. If aget(n,name) == value, 
 *  if deg(n) == 1, delete
 *  if deg(n) == 2, delete and connect to neighbor with edge
 *  if deg(n) > 2, delete and add edge between all pairs of neighbors
 *  Add weights to edge.
 */
BEGIN{
  int i, cnt;
  int wt[edge_t];
  string values[int];
  node_t nbrs[int];
  edge_t e;
  tokens(ARGV[0],values,"=");
  string aname = values[0];
  string value = values[1];
  printf(2, "%s=%s\n", aname, value);
}
N[aget($,aname)==value] {
  if ($.degree > 1) {
    cnt = 0;
    for (e = fstedge($); e; e = nxtedge(e, $))
      nbrs[cnt++] = opp(e,$);
    for (i = 0; i < cnt-1; i++) {
      if ((e = isEdge(nbrs[i],nbrs[i+1],"")) != NULL) {
        wt[e] += 1;
      }
      else if ($G.directed && (e = isEdge(nbrs[i+1],nbrs[i],""))) {
        wt[e] += 1;
      }
      else if (nbrs[i] != nbrs[i+1]) { // avoid loops
        e = edge(nbrs[i],nbrs[i+1],"");
        wt[e] = 1;
      }
    }
    unset(nbrs);
  }
  delete($G,$);
}
END_G{
  for (wt[e]) {
    e.multiplicity = sprintf ("%d", wt[e]);
  }
}

Anon7 - 2022
SCDN GOK