搜广推校招面经三十九

发布于:2025-03-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

小红书﹣图搜

一、两个整数的汉明距离

两个整数之间的汉明距离是指这两个数字对应二进制位相同位置不同的个数。换句话说,它就是将一个整数变成另一个整数所需要改变的二进制位的数量。例如,如果两个整数在它们的二进制表示中有三个位置上的比特不同,那么这两个整数的汉明距离就是3。
计算两个整数的汉明距离可以通过以下步骤实现:

  1. 首先对这两个整数进行异或(XOR)运算。异或运算是按位操作,当且仅当输入位不同时输出为1。因此,通过异或运算我们可以得到一个新的数,这个数的每个1都代表了原始两个数在那个位置上是不同的。
  2. 然后统计异或结果中1的个数,这个数量就是汉明距离。
  3. 代码:
def hamming_distance(x, y):
    xor_result = x ^ y     #  对两个数字做异或
    distance = 0
    while xor_result:  # 统计异或结果中1的个数(可以直接遍历,这里使用了一种叫做布赖恩·克尼根算法(Brian Kernighan's Algorithm)来高效计算二进制中1的个数)
        distance += 1
        xor_result &= xor_result - 1  # Remove the lowest set bit from xor_result
  
    return distance

# 示例调用
x = 1  # 二进制表示为 0001
y = 4  # 二进制表示为 0100
print("汉明距离:", hamming_distance(x, y))  # 输出应为2

1.2 编辑距离

如果大家做过一些文字或者字符串的特征特征工程,那一定知道另外一个度量字符串差异的距离,叫编辑距离
汉明距离和编辑距离在某些方面看起来相似,因为它们都涉及到了字符串(或数字的二进制表示)之间的差异性度量。

1.2.1. 力扣hot100_72.编辑距离(中等)

在这里插入图片描述

二、将 Attention 的点积改为余弦相似度会怎么样?

2.1. 归一化效果

  • 点积:受向量长度影响,可能导致某些维度主导注意力权重。
  • 余弦相似度:通过归一化消除向量长度的影响,使注意力更聚焦于方向而非大小。
  • 余弦相似度:在某些任务中可能提升表现,尤其是当向量长度差异较大时,但并非总是优于点积。

2.2. 计算复杂度

  • 点积:计算简单,复杂度为 O ( d ) O(d) O(d),其中 d d d 是向量维度。
  • 余弦相似度:需额外计算向量的 L2 范数,复杂度略高,但仍为 O ( d ) O(d) O(d)

三、装饰器是什么?

什么是 Python 装饰器

Python 装饰器(Decorator)是一种用于修改或扩展函数或方法行为的特殊语法。它本质上是一个高阶函数,接受一个函数作为输入,并返回一个新的函数。装饰器通常用于在不修改原函数代码的情况下,为函数添加额外的功能(如日志记录、权限检查、性能测试等)。

3.1. 装饰器的基本概念

  • 装饰器是一个函数(或可调用对象),它接受一个函数作为参数,并返回一个新的函数。
  • 装饰器使用 @ 符号来应用到目标函数上,其作用是对目标函数进行“包装”,从而在不修改原函数代码的情况下扩展其功能。

3.2. 装饰器的语法

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("在函数执行前做一些操作")
        result = func(*args, **kwargs)
        print("在函数执行后做一些操作")
        return result
    return wrapper

@my_decorator
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Alice")
  • 输出:
在函数执行前做一些操作
Hello, Alice!
在函数执行后做一些操作

网站公告

今日签到

点亮在社区的每一天
去签到