1zplay电子竞技Python高手怎么着破解谷歌(Google卡塔尔国的面试题

作者:编程    发布时间:2020-02-11 05:31     浏览次数 :

[返回]

开头先讲一下自己的亲身经历,05年的时候,也就是12年前,我去T公司面试,当时T公司在这个城市非常有名,有很多高手.我当时也是抱着初生牛犊不怕虎,想去会一会.在通过第一轮的笔试(当时考算法,程序,还有IQ)和初级面试后,进入第二轮,来了一个台湾技术经理,问了一些问题之后出了一道题,要求3分钟给出答案,这道题就是今天下面要讲的~~这3分钟我当时是又惊又囧,10多年过去了我现在依然记忆犹新(也许我以后会写一篇"10年了外企面试的那些往事")

5.1,问题的提出

五元组R(U,D,dom,F)的定义,重点讨论三元组R(U,F)。

常见的三个模式设计毛病:1,插入异常;2,删除异常;3,大量冗余

3.1 函数

今天先说正题,没有想到十多年后,我无意中浏览硅谷的一些网站时候,竟然又碰到了这道题,太有缘了.这次是一个Google大牛分析这道题,而且是用Python解的(Python在Google里号称是最喜欢的语言之一),我觉得太过瘾了,力道雄厚而刚劲,招式非常巧妙,我加上自己的理解一起分享给大家.

5.2,规范化

函数定义

  • 在X×Y创造出的序偶集合里, 如果对于所有a∈X集合, 都有唯一的b∈Y集合, 使得<a,b>∈f, 则称f是从X集合到Y集合的一个函数(也叫映射, 在严格的数学理论里, 函数范围更小, 函数限制X集合和Y集合中必须是数, 函数要求f是映上的).
  • 函数记作 f: X->Y, x∈X集合称为函数f的变元, y∈Y集合称为变元x在f下的值(象), 记为f(x).
  • 注意:
    • D(f) = X, 所有a∈X集合都得有对应的b∈Y集合;
    • 虽然和严格情况下的数学理论有差异, 但是这里我们只要求关系f的值域R(f)是Y的一个子集.
  • 底函数 = floor(x); 顶函数 = ceil(x);

题目#翻译成中文:

5.2.1,函数依赖

函数依赖的定义。在r中不存在X值相等而Y值不相等的两个元组。

非平凡函数依赖和平凡函数依赖的定义。X->Y但是Y不属于X,不平凡的函数依赖。X->Y且Y属于X,频繁的函数依赖。

完全函数依赖和部分函数依赖的定义。X->Y,且X的任意真子集都不能->Y,则是完全函数依赖。

传递函数依赖(间接函数依赖)。X->Y,Y不->X,Y->Z,则X间接->Z。

特征函数

  • A(x) = 1, x∈A; 0, x∉A;
  • 空集: A(x)恒等于0;
  • 全集E : A(x)恒等于1;
  • B包含A: A(x)≤ B(x) 对所有x∈X集合总是成立;
  • B集合=A集合: A(x)=B(x) 对所有x∈X集合总成立;
  • 集合的交并差补运算:
  • A集合∩B集合: A(x)*B(x), 对所有x∈X集合进行运算;
  • A集合∪B集合: A(x)+B(x)-A(x)*B(x); 加起来去掉重叠的;
  • A集合-B集合: A(x)-A(x)*B(x), A去掉AB都有的,留下自己独有的;
  • A集合的补集: 1-A(x),

一个和尚去河边挑水,带了两个桶,一个是能装4斤水,一个能装9斤水

5.2.2,码

候选码。若K完全决定F,则K为候选码。

主码。候选码中选一个。

主属性。候选码中的每一个属性均为主属性。

全码(没有任何候选码所以只能将整个属性组作为码,称为全码)。

外码。在本关系中属于非主属性,但是在其他某一关系中属于主属性。

受限VS扩展

  • 受限, 缩小定义域D(f), 扩展, 扩大定义域D(f);
  • 若f是从集合X到集合Y的一个函数, 即对所有a∈X都有对应的b∈Y来组成<a,b>序偶, 有一个集合A是X的子集, 则f∩(A×Y), 定义是从A到Y, 显然是f在A上的受限; 假设叫其h, 那么f定义是从X到Y函数, 是对h这样A到Y函数的扩展;

1),要求写出算法,目标是如何装出6斤水

5.2.3,范式

范式是什么?

映上=满射, 映内=没满射, 一对一=单射, 一一对应=双射

  • 函数f: X->Y 的值域R(f)=Y集合, 是映上/满射; Y真包含了R(f), 那么是映内, 没射满;
  • f(a) 总是≠ f(b), 叫做一对一, 单射; 对每个y∈Y都有相互不同的x∈X对应的话, 是一一对应, 也就是说映上且一对一是一一对应;
  • 实例化: 如果说全中国的男人和女人数目相等, 且都能配对结婚没人打光棍, 我们说这是双射,一一对应的, 因为从女人X到男人Y的映射, 满足映上(满射, 所有男人m∈Y都有一个女人射向他), 一对一(单射的, 每个女人嫁给了不同的男人, 没有任何两个女人嫁给同一个老公), 所以满足了一一对应, 双射关系;
  • 如果说海淀区有个新小区摇号, 每个人最多只能买一套, 那么f: X->Y首先是单射的, 每个房子∈X, 都能有一个不同的买主∈Y来对应, 但是因为房子总是紧张的, 肯定很多人排队也买不到, 所以f也是映内的;

2),假设两个桶容量任意,比如X斤和Y斤,目标是Z斤;要求写出算法

5.2.4,2NF

什么是符合第二范式2NF?关系符合1NF,且所有非主属性完全依赖于码。

不符合第二范式会带来一些问题,解决方案就是通过各种方式让其符合第二范式(比如拆表)。

函数的复合运算

  • f:X->Y, g:Y->Z, f·g={<x,z>| 存在y∈Y, 使得y=f(x), 且z=g(y)}
  • 所以 f·g(x), 就是从g(f(x));
  • 服从结合律, 但是必然不满足交换律, 毕竟这里面约定了顺序;

一.就像我们解数学题一样,我们先化繁为简,先从最简单的入手

5.2.5,3NF

什么是符合3NF?所有非主属性既不是部分依赖于码,又不是传递依赖于码。

函数f的逆和恒等函数

  • f的可逆性: 只有f满足了一一对应, 也就是既要映上(保证Y上每个元素都能对回去), 又得一对一(保证Y上每个元素对回去只对到唯一的一个值), 才能是可逆的, 才有f^(-1)存在, 这是因为函数的X内每个元素都得有对应值;
  • 恒等函数: Ix = {<x,x>}称为恒等函数; 也可以写作 f: X->X(f(a)=a总是成立);
  • 可逆复合等价恒等性质: 显然, 直观上能明白, 如果f是可逆的, 那么f·f^(-1) = Ix, 因为X->Y->X, 其实X和Y之间是双向箭头, 每个a∈X的箭头最后又指向a自己; f^(-1)·f = Iy, 因为Y->X->Y, 每个b∈Y的箭头最后指回b自己;
  • 所以, f:X→Y, g:Y→X, 那么g=f逆 等价于 f·g = Ix 且 g·f = Iy;

AB两个桶:一个能装3斤水,一个能装5斤水=>目标4斤

5.2.6,BCNF

什么是符合BCNF?每一个决定因素都包含码,而不是被码包含。BCNF是对3NF的强化,即BCNF必为3NF,但是3NF不一定是BCNF。

1zplay电子竞技 1

5.2.7,多值依赖

什么是多值依赖?对于R(U,F),有X,Y,Z满足Z=U-X-Y,对任意一对(x,z),有一组y值,这组值仅仅取决于x的取值而于z无关。记为X->->Y。说简单一些,只要X不变,无论Z怎么变,Y都是一组特定的值。当X-->Y,且Z=空集时,成为平凡的多值依赖。

多值依赖的六大性质:

1,对称性,若X-->Y,则必有X-->Z(Z=U-X-Y);

2,传递性,X-->Y,X-->Z,X-->Z-Y;

3,函数依赖是多值依赖的特殊情况,即函数依赖是一种多值依赖;

4,X-->Y,X-->Z,则X-->Y并Z;

5,X-->Y,X-->Z,则X-->Y交Z;

6,X-->Y,X-->Z,则X-->Y-Z,X-->Z-Y;

多值依赖与函数依赖的两大区别:

1,多值依赖大范围成立,小范围依然成立,反之不然;而函数依赖不在乎范围。

2,X->Y,则X->Y'成立;X-->Y,X-->Y'不一定成立。(Y'属于Y)。

上面只是一个很简单的实例,我相信一个4斤水,一个9斤,大家也能类似的推导出6斤水,只是步骤多一点而已,不是很难.

5.2.8,4NF

什么是符合4NF?对于R的每个非平凡多值依赖X-->Y,X都含有码。也就是说要使其满足4NF,要么X含有码,要么全是平凡多值依赖。

那么如果用计算机算法来解决任意X,Y的问题的,这个就很有意思了.我们接着分析~~

5.3,数据依赖的公理系统

F逻辑蕴含X->Y是什么意思?对于一个R(U,F),如果有X->Y,则称F逻辑蕴含X->Y。

三条定律:

三条定律推论出的三条规则:

闭包算法:

闭包等价的充要条件:

最小依赖集的定义:

极小化处理的三步算法:

二.好有了这个感性的认识之后,我们开始抽象化,建模成算法.

5.4,模式分解

我们发现穷举所有的组合,无非就这下面6种操作:

1.B->A

2.A->B

3.Fill A

4.Fill B

5.Empty A

6.Empty B

假设A桶容量是X,B桶容量是Y,A桶里面倒入的水是x,B桶倒入的是y

数据结构,很容易就想到我们应该用字典:我们用元组来表示两个桶的水,用字符串表示操作步骤

我们先从易到难开始说:

1.Empty B

=>'Empty Y' #把B桶的水倒空

2.Empty A

=>'Empty X' #把A桶的水倒空

3.Fill A

下一篇:没有了