设为首页 加入收藏

TOP

分支限界法之旅行售货员问题
2014-11-23 21:26:54 】 浏览:5474
Tags:分支 限界 旅行 售货员 问题

  #include #include


  #define NoEdge 1000


  struct MinHeapNode


  {


  int lcost; //子树费用的下界


  int cc; //当前费用


  int rcost; //x[s:n-1]中顶点最小出边费用和


  int s; //根节点到当前节点的路径为x[0:s]


  int *x; //需要进一步搜索的顶点是//x[s+1:n-1]


  struct MinHeapNode *next;


  };


  int n; //图G的顶点数


  int **a; //图G的邻接矩阵


  //int NoEdge; //图G的无边标记


  int cc; //当前费用


  int bestc; //当前最小费用


  MinHeapNode* head = 0; /*堆头*/


  MinHeapNode* lq = 0; /*堆第一个元素*/


  MinHeapNode* fq = 0; /*堆最后一个元素*/


  int DeleteMin(MinHeapNode*&E)


  {


  MinHeapNode* tmp = NULL;


  tmp = fq;


  // w = fq->weight ;


  E = fq;


  if(E == NULL)


  return 0;


  head->next = fq->next; /*一定不能丢了链表头*/


  fq = fq->next;


  // free(tmp) ;


  return 0;


  }


  int Insert(MinHeapNode* hn)


  {


  if(head->next == NULL)


  {


  head->next = hn; //将元素放入链表中


  fq = lq = head->next; //一定要使元素放到链中


  }else


  {


  MinHeapNode *tmp = NULL;


  tmp = fq;


  if(tmp->cc > hn->cc)


  {


  hn->next = tmp;


  head->next = hn;


  fq = head->next; /*链表只有一个元素的情况*/


  }else


  {


  for(; tmp != NULL;)


  {


  if(tmp->next != NULL && tmp->cc > hn->cc)


  {


  hn->next = tmp->next;


  tmp->next = hn;


  break;


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇分支限界法之布线问题 下一篇分支限界法之01背包问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目