新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> We choose to study algorithmic problems,  not because they are easy,  but because they are hard.
    [返回] 计算机科学论坛计算机理论与工程『 算法理论与分析 』 → 请教高手三个关于算法的问题! 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6994 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 请教高手三个关于算法的问题! 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     lanyuandong 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:18
      积分:157
      门派:XML.ORG.CN
      注册:2006/12/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lanyuandong发送一个短消息 把lanyuandong加入好友 查看lanyuandong的个人资料 搜索lanyuandong在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lanyuandong的博客楼主
    发贴心情 请教高手三个关于算法的问题!


    第一个题目:

    给出一个求两个矩阵乘积并对结果矩阵元素从小到大排序的算法.要求时间和空间复杂度尽可能好,分析算法的时间复杂度.

    第二个题目:

    图G是两个C4k(4k是下标)的卡氏积图,G的V={(x1,x2)|x1,x2属于C4k}(x1,x2)和(y1,y2)相邻当x1=y1且x2和y2在C4k中相邻,或者x2=y2且x1和y1在C4k中相邻,要求G中任意两点的最短路径和所有最短路径中的最大值(用k的函数表示),其中C4k是4k个结点的圈.

    第三个题目:

    交换树T1的某些结点的左右子树得到T2,这样我们就说T1和T2同构,写一个算法来判断两棵树是否同构

    希望给出解答的高手们,说得详细点
    非常感谢!


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 22:44:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客2
    发贴心情 
    对于第一个问题:
    题目中没有说是不是稀疏矩阵,于是考虑一般性,将两个矩阵都以二维数组的方式存储起来。
    根据行列计算出结果需要多大的空间。使用堆排序,将每个行列相乘的结果放入堆中。乘完之后再输出。假设两个矩阵的大小分别是l1*r1, l2*r2, 则时间复杂度为O(l1*r2*log(l1*r2))。空间复杂度为O(l1*r2)
    第二题没有看明白,是哪本书上的?
    第三题:
    我这样写,不知道对不对,请大大们看看:
    bool Isomorphic(BST *root1, BST *root2)
    {
       if (root1->num() == 0|| root2->num() == 0)
          return true;
       if (root1->left->num() == root2->left->num() &&
           root1->right->num() == root2>right->num() &&
           root1->left->num() != root1->right->num() )
           return Isomorphic(root1->left, root2->left) && Isomorphic(root1->right, root2->right) ;
       else if (root1->left->num() == root2->left->num() &&
           root1->right->num() == root2>right->num() &&
           root1->left->num() == root1->right->num() )
          return (Isomorphic(root1->left, root2->left) && Isomorphic(root1->right, root2->right) ) || ( Isomorphic(root1->left, root2->right) && Isomorphic(root1->right, root2->left) );
          else if (root1->left->num() == root2->right->num() &&
           root1->right->num() == root2>left->num() )
          return Isomorphic(root1->left, root2->right) && Isomorphic(root1->right, root2->left) ;
          else
             return false;
    }
    其中root1->num()返回root的所有子孙节点数。
    伪码只反映了我对这个问题解答的思想。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/30 15:10:00
     
     lanyuandong 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:18
      积分:157
      门派:XML.ORG.CN
      注册:2006/12/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lanyuandong发送一个短消息 把lanyuandong加入好友 查看lanyuandong的个人资料 搜索lanyuandong在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lanyuandong的博客3
    发贴心情 
    感谢"冬天的农夫"第一题应该是没问题
    第三题我也想出解决的办法
    第二题目也是相对最难的一个
    是离散数学中图论部分的题目
    图G是两个C4k(4k是下标)的卡氏积图,"""G的V={(x1,x2)|x1,x2属于C4k}(x1,x2)和(y1,y2)相邻当x1=y1且x2和y2在C4k中相邻,或者x2=y2且x1和y1在C4k中相邻""",要求G中任意两点的最短路径和所有最短路径中的最大值(用k的函数表示),其中C4k是4k个结点的圈.
    三个引号括起来的部分就是对卡氏积图的定义,也就是说G中两个结点之间有边的条件.
    希望您能再次回复我,就算不知道如何解答也要告诉我,如何给你100分,哈哈,我还不太知道如何使用.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/30 22:45:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客4
    发贴心情 
    五一回家了。。不好意思。。明白你说的意思了

    对于问题二:
    所有最短路径中的最大值应该是2K。
    因为在一个圈中两个顶点最大的距离会是K
    两个圈的积图可以这样考虑取点:
    选定<v1,u1>和<vk,uk>则这两个点的距离最大。
    因为:通俗的说就是v1和vk最远,u1和uk最远。。。
    我可能不是说得很明白,看你能不能理解。

    要求G中任意两点的最短路:
    |<(Vi, Uj),(Vg, Uh) >| = (i-g+2k)mod2k + (j-h+2k)mod2k;
    要是不明白再发帖问吧

    还有我开了个离散的答疑帖,可以在上面提问。
    http://www.ieee.org.cn/dispbbs.asp?boardID=67&ID=61407

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/4 12:23:00
     
     Logician 帅哥哟,离线,有人找我吗?天蝎座1984-10-28
      
      
      威望:9
      头衔:逻辑爱好者
      等级:研三(收到IBM CRL的Offer了)(版主)
      文章:1219
      积分:10357
      门派:IEEE.ORG.CN
      注册:2005/3/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Logician发送一个短消息 把Logician加入好友 查看Logician的个人资料 搜索Logician在『 算法理论与分析 』的所有贴子 点击这里发送电邮给Logician  访问Logician的主页 引用回复这个贴子 回复这个贴子 查看Logician的博客5
    发贴心情 
    2. 记 V(G) = {<i,j>| 0<=i,j<=4k},则 E(G) = { (<i,j>,<i+1 mod 4k, j>), (<i,j>,<i,j+1 mod 4k>) | 0<=i,j<4k}

    易见,对任意<a,b>,<c,d>属于V(G),若 max{|c-a|,4k-|c-a|} = x<=2k,max{|d-b|,4k-|d-b|} = y <=2k,那么从<a,b>到<c,d>的最短路长度为x+y。(这个结论的证明依赖于,E(G)中的每一条边只会让<i,j>的某一个坐标模4k增1或模4k减1。)
    从而G的直径(即最长的最短路距离)为4k。

    ----------------------------------------------
    Three passions, simple but overwhelmingly strong, 
    have governed my life: the longing for love, the
    search for knowledge, and unbearable pity for the
    suffering of mankind.
                                - Bertrand Russell

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/4 16:41:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客6
    发贴心情 
    不好意思,我看错题了,把4k当作2k了
    修改一下:
    所有最短路径中的最大值应该是4K。
    因为在一个圈中两个顶点最大的距离会是2K
    两个圈的积图可以这样考虑取点:
    选定<v1,u1>和<vk,uk>则这两个点的距离最大。
    因为:通俗的说就是v1和vk最远,u1和uk最远。。。
    我可能不是说得很明白,看你能不能理解。

    要求G中任意两点的最短路:
    |<(Vi, Uj),(Vg, Uh) >| = (i-g+4k)mod4k + (j-h+4k)mod4k;

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/4 22:01:00
     
     lanyuandong 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:18
      积分:157
      门派:XML.ORG.CN
      注册:2006/12/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lanyuandong发送一个短消息 把lanyuandong加入好友 查看lanyuandong的个人资料 搜索lanyuandong在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lanyuandong的博客7
    发贴心情 
    谢谢大家的解答,我还想问一个问题,这些东西在什么书上能学到,能推荐一本相关的书吗?
    因为离散数学上对这个东西只是一带而过
    再次谢谢您们
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/5 9:46:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客8
    发贴心情 
    以下是引用lanyuandong在2008-5-5 9:46:00的发言:
    谢谢大家的解答,我还想问一个问题,这些东西在什么书上能学到,能推荐一本相关的书吗?
    因为离散数学上对这个东西只是一带而过
    再次谢谢您们

    北大有本离散的书很全面

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/12 17:01:00
     
     kinghere 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:68
      门派:XML.ORG.CN
      注册:2008/5/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给kinghere发送一个短消息 把kinghere加入好友 查看kinghere的个人资料 搜索kinghere在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看kinghere的博客9
    发贴心情 
    。。。。。。。。。。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/23 19:16:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 算法理论与分析 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/27 6:35:44

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms