被人牵着鼻子走,到了地方还墨明棋妙地吃一顿砖头。今日头条AI-Lab,其实我一直发现,最擅长的还是点云图像处理,且只是点云处理。

一、C++题目  

New 与Malloc的区别:

看这个:New与Malloc区别

虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。

1) malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2) 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。我们不要企图用malloc/free来完成动态对象的内存管理,应该用new/delete。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。3) 既然new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,结果也会导致程序出错,但是该程序的可读性很差。所以new/delete必须配对使用,malloc/free也一样。

C++11 的新特性

unique_ptr和shared_ptr的区别:所有权概念。p.671页。对于特定的图像,只能有一个智能指针拥有它,这样只有拥有对象的智能指针的构造函数会删除该对象。然后,让赋值操作转让所有权。这就是用于auto_ptr和unique_ptr的策略,当unique的策略更为严格。

使用引用计数,是shared_ptr采用的策略,仅当最后一个指针过期时,才调用delete。unique能够区分安全和不安全的用法,因为使用了C++11的特性移动构造函数和右值引用功能。

注意:使用new分配内存时,才能使用auto和share,使用new[]分配内存时,不能使用它们。不使用new分配内存时,不能使用auto和share;不使用new或者new[]时,不能使用unique_ptr。

移动语义:移动语义避免了移动原始数据,只是修改了记录。实现方法原理:让编译器知道什么时候需要复制,什么时候不需要复制,这就是右值引用发挥作用的地方。

右值引用:使用移动构造函数。C++.p808.

二、多视几何

极线约束

三、矩阵分析

Cholesky分解和QR分解的区别:建议还是看书,好好把题目再做一遍。

Cholesky分解法又叫平方根法,是求解对称正定线性方程组最常用的方法之一。对于一般矩阵,为了消除LU分解的局限性和误差的过分积累,采用了选主元的方法,但对于对称正定矩阵而言,选主元是不必要的。

-LU分解、LDLT分解、Cholesky分解:

Cholesky分解是一种分解矩阵的方法, 在线形代数中有重要的应用。Cholesky分解把矩阵分解为一个下三角矩阵以及它的共轭转置矩阵的乘积(那实数界来类比的话此分解就好像求平方根)。与一般的矩阵分解求解方程的方法比较,Cholesky分解效率很高

     Cholesky分解的条件:

一、Hermitianmatrix:矩阵中的元素共轭对称(复数域的定义,类比于实数对称矩阵)。Hermitiank意味着对于任意向量x和y,(x*)Ay共轭相等

二、Positive-definite:正定(矩阵域,类比于正实数的一种定义)。正定矩阵A意味着,对于任何向量x,(x^T)Ax总是>零(复数域是(x*)Ax>0).

      Cholesky分解的形式:

可记作A = L L*。其中L是下三角矩阵。L*是L的共轭转置矩阵。

可以证明,只要A满足以上两个条件,L是唯一确定的,而且L的对角元素肯定是正数。反过来也对,即存在L把A分解的话,A满足以上两个条件。

如果A是半正定的(semi-definite),也可以分解,不过这时候L就不唯一了。

特别的,如果A是实数对称矩阵,那么L的元素肯定也是实数。

另外,满足以上两个条件意味着A矩阵的特征值都为正实数,因为Ax = lamda * x,(x*)Ax = lamda * (x*)x > 0, lamda > 0.

-QR分解是将矩阵分解为一个正交矩阵与上三角矩阵的乘积。用一张图可以形象地表示QR分解:
      
    这其中, Q为正交矩阵,QTQ=I,R为上三角矩阵。 实际中,QR分解经常被用来解线性最小二乘问题。

Cholesky分解只能用于正定对称矩阵,但实际方程组中,正定对称矩阵不一定满足,在接近正定的矩阵时,会产生病态矩阵问题。QR是一种泛用的方法。

常见的矩阵分解有可逆方阵的三角(LU)分解、任意满秩矩阵的正交三角(QR)分解、对称正定矩阵的Cholesky分解,以及任意方阵的Schur分解、Hessenberg分解、EVD分解、SVD分解、GMD分解等。
(1)可逆方阵的LU分解矩阵的LU分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式。线性代数中已经证明,只要方阵A是非奇异的(即可逆的),LU分解总是可以进行的。
当L为单位下三角矩阵而U为上三角矩阵时,此三角分解称为杜利特(Doolittle)分解。当L为下三角矩阵而U为单位上三角矩阵时,此三角分解称为克劳特(Crout)分解。显然,如果存在,矩阵的三角分解不是唯一的。
(PS:方阵A可唯一地分解为A=LDU(其中L,U分别为单位下,上三角矩阵,D为对角矩阵)的充分必要条件为A的前n-1个顺序主子式都不为0。特别:对n阶对称正定矩阵,存在一个非奇异下三角矩阵L,使得A=LL'成立。)
MATLAB提供的lu函数用于对矩阵进行LU分解,其调用格式为:[L,U]  =lu(X):产生一个上三角阵U和一个变换形式的下三角阵L(行交换),使之满足X=LU。注意,这里的矩阵X必须是方阵。[L,U,P]=lu(X):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足PX=LU。当然矩阵X同样必须是方阵。
(2) 满秩矩阵的QR分解
对矩阵X进行QR分解,就是把X分解为一个正交矩阵Q和一个上三角矩阵R的乘积形式。QR分解只能对方阵进行。MATLAB的函数qr可用于对矩阵进行QR分解,其调用格式为:[Q,R]  =qr(X):  产生一个一个正交矩阵Q和一个上三角矩阵R,使之满足X=QR。[Q,R,E]=qr(X):产生一个一个正交矩阵Q、一个上三角矩阵R以及一个置换矩阵E,使之满足XE=QR。
(3)对称正定矩阵的Cholesky分解如果矩阵X是对称正定的,则Cholesky分解将矩阵X分解成一个下三角矩阵和上三角矩阵的乘积。设上三角矩阵为R,则下三角矩阵为其转置,即X=R'R。MATLAB函数chol(X)用于对矩阵X进行Cholesky分解,其调用格式为:R    =chol(X):产生一个上三角阵R,使R'R=X。若X为非对称正定,则输出一个出错信息。[R,p]=chol(X):这个命令格式将不输出出错信息。当X为对称正定的,则p=0,R与上述格式得到的结果相同;否则p为一个正整数。如果X为满秩矩阵,则R为一个阶数为q=p-1的上三角阵,且满足R'R=X(1:q,1:q)。
(4)任意方阵的Schur分解任意一个n阶方阵X可以分解为X=URU',其中U为酉矩阵,R为上三角schur矩阵且其主对角线上的元素为X的特征值。[U,R]=schur(X)
(5)任意方阵的Hessenberg分解任意一个n阶方阵X可以分解为X=PHP', 其中P为酉矩阵, H的第一子对角线下的元素均为0,即H为Hessenberg矩阵。[P,H]=hess(X)
(6)任意方阵的特征值分解EVD任意一个n阶方阵X可以分解为XV=VD,其中D为X的特征值对角阵,V为X的特征向量矩阵。[V,D]=eig(X)[V,D]=eig(X,Y)计算广义特征值矩阵D和广义特征值向量矩阵V,使得XV=YVD。
(7)任意矩阵的奇异值分解SVD任意一个m*n维的矩阵X可以分解为X=USV',U,V均为酉矩阵,S为m*n维的对角矩阵,其对角线元素为X的从大到小排序的非负奇异值。[U,S,V]=svd(X)
(8) 任意矩阵的几何均值分解GMD任意矩阵m*n维的矩阵X可以分解为X=QRP', Q,P均为酉矩阵,R为k*k维的实正线上三角矩阵,其主对角线元素均等于X的所有K个正奇异值的几何均值,k=rank(X)。
(PS: 一个n × n的实对称矩阵 M 是正定的当且仅当对于所有的非零实系数向量z,都有 zTMz > 0。其中zT 表示z的转置。对于复数的情况,定义则为:一个n × n的埃尔米特矩阵 M 是正定的当且仅当对于每个非零的复向量z,都有z*Mz > 0。其中z* 表示z的共轭转置。由于 M是埃尔米特矩阵,经计算可知,对于任意的复向量z,z*Mz必然是实数,从而可以与0比较大小。因此这个定义是自洽的。正定方阵M的所有的特征值 λi都是正的。)

四、编程题目

广度优先遍历--使用队列

使用一个先进先出的队列,可以实现一个二叉树的广度优先遍历BFS。

五、深度图像

面元提取、三维特征、

三维重建13X:一些算法试题-今日头条AI-Lab相关推荐

  1. 今日头条的排名算法_今日头条核心技术“个性推荐算法”揭秘

    [IT168 评论]互联网给用户带来了大量的信息,满足了用户在信息时代对信息的需求,也使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,而通常解决这个问题最常 ...

  2. 推荐算法是今日头条的核心竞争力吗?

    首先申明一下,推荐算法是个很大的话题,实际工程中也是很多策略交织在一起.所以本文主要是尽量通俗易懂的讲清楚推荐算法是个什么东西,不追求深入.全面和绝对的精确. 以下内容分三部分:算法的核心:算法有多大 ...

  3. 今日头条的排名算法_今日头条三大智能算法揭秘 让你快速明头条的推荐原理...

    我们都知道,我们发布在头条的内容阅读量的高低是受头条的算法影响的,因此作为新媒体小编,了解今日头条的算法很重要.所以今天我们就一起来看看今日头条的智能算法到底是怎样的. 一.审核 头条的算法里包含一个 ...

  4. 今日头条的排名算法_今日头条搜索seo排名怎么做? 今日头条搜索排名规则...

    今日 既然今日头条宣布做搜索引擎,怎么少的了"头条seo"的研究呢? 一."头条seo"是什么? 头条seo指的是在今日头条app上用关键词搜索结果排名靠前.头 ...

  5. 今日头条的排名算法_今日头条搜索seo排名怎么做 今日头条搜索排名规则

    既然今日头条宣布做搜索引擎,怎么少的了"头条seo"的研究呢? 一."头条seo"是什么? 头条seo指的是在今日头条app上用关键词搜索结果排名靠前.头条号称 ...

  6. 今日头条的排名算法_今日头条的算法有多强?

    今日头条不一定统治世界,但是算法一定统治世界! 今日头条给我的印象一直都是充斥着各种八卦信息的软件,直到发现,抖音异军突起,今日头条已经在不知不觉间,拿下了半壁江山. 今日头条强势突起 身边的人随时随 ...

  7. 【推荐算法】今日头条推荐系统原理

    据悉,今日头条的信息推荐算法自2012年9月第一版开发运行至今,已经经过四次大调整和修改.目前服务全球亿万用户. 以下为曹欢欢关于<今日头条算法原理>的分享内容(已授权): 本次分享将主要 ...

  8. 今日头条的排名算法_今日头条的推荐机制是怎么算法的?

    机器通过计算得出的用户阅读兴趣用户阅读过的文章分类和关键词: 用户聚类:相似类型用户还喜欢阅读的其他文章类型: 用户在今日头条客户端主动标记「不感兴趣」的实体词或文章类型. 根据以上数据,系统对用户的 ...

  9. 今日头条社招PHP面试题,今日头条社招 ios工程师面经

    今日头条 今日头条一面 自我介绍 手里有你的简历,但是还是想听听你来自我介绍下 • 合并两个有序数组 • 二叉树的反转 • 线程和进程的区别 • 堆和栈的区别 • load和initialize区别以 ...

最新文章

  1. 怎么用canvas画秒针_用canvas画一个钟表
  2. Java中创建对象的几种方式
  3. STM32开发 -- Ublox GPS之设置PUBX
  4. 多边形之间相交求交点的算法_路径规划算法总结
  5. 数字图像处理--几种图像均值滤波的java实现
  6. 刷爆AI圈!基于Transformer的DALL-E代码刚刚开源了
  7. oracle as sydba,Oracle数据库之SQL*Plus工具使用 sqlplus / as sysdba登录
  8. scala基础之对象
  9. Asp.net2005 使用 NVelocity 实现 MVC
  10. go url 参数编码和解码
  11. Pow,Pos,Dpos共识机制比较
  12. SQL Server常用查询指令
  13. 【亲测有效】iPhone实现定时关机、开机 - 远离手机 准时睡觉
  14. 《数据结构题集》2.12
  15. html菜鸟教程选项卡,jQuery EasyUI 布局插件 – Tabs 标签页/选项卡 | 菜鸟教程
  16. 机器非正常关机 出现ora-01033 oracle,oracle ORA-01033问题的解决办法
  17. 国内外RTI产品调查情况
  18. NRF51822 回顾总结
  19. 大学生企业计算机应用能力需求调研,五个专业计算机能力需求调研分析论文
  20. Centos7下安装FastDFS服务

热门文章

  1. MySQL Gap Lock问题
  2. python--列表与字典
  3. 【TCP/IP详解 卷一:协议】第十八章 TCP连接 的建立与终止 (2)其余内容
  4. Redis总结(四)Redis 的持久化
  5. python入门常识
  6. vlan间访问控制的三种方法
  7. 用Delphi写扬声器音乐
  8. 安装 PHP Memcache 扩展
  9. Django Cookie于Session
  10. 彻底卸载SqlServer2008R2