关于网站建设的意义/怎么建立一个网站
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
# from torchviz import make_dot
import torchviz# 1. Lyapunov 函数近似器(MLP 结构)
class LyapunovNet(nn.Module):def __init__(self, input_dim, hidden_dim=32):super(LyapunovNet, self).__init__()self.model = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, 1) # 输出一个标量,表示Lyapunov函数值)def forward(self, x):return self.model(x)# 2. 梯度伴随网络(计算 Lyapunov 函数的梯度)
def compute_gradient(model, x):x.requires_grad_(True)V = model(x)grad_V = torch.autograd.grad(V.sum(), x, create_graph=True)[0]return V, grad_V# 3. 训练数据(随机生成一些状态数据)
def generate_data(num_samples=1000, state_dim=2):return torch.randn(num_samples, state_dim) * 5 # 扩大范围# 4. 网络权重初始化
def init_weights(m):if isinstance(m, nn.Linear):torch.nn.init.xavier_uniform_(m.weight)if m.bias is not None:torch.nn.init.zeros_(m.bias)# 5. 训练 Lyapunov 网络并绘制损失曲线
def train_lyapunov_net(state_dim=2, epochs=500, lr=0.001):model = LyapunovNet(input_dim=state_dim)model.apply(init_weights) # 重新初始化网络optimizer = optim.Adam(model.parameters(), lr=lr)loss_history = []for epoch in range(epochs):x = generate_data()V, grad_V = compute_gradient(model, x)# 修正损失函数loss = torch.mean(torch.relu(-grad_V.sum(dim=1))) + torch.mean(torch.relu(-V))optimizer.zero_grad()loss.backward()optimizer.step()loss_history.append(loss.item())if epoch % 50 == 0:print(f"Epoch {epoch}, Loss: {loss.item():.6f}")# 绘制损失曲线plt.plot(loss_history)plt.xlabel("Epoch")plt.ylabel("Loss")plt.title("Training Loss Curve")plt.grid()plt.show()return model# 6. 可视化神经网络计算图
def visualize_lyapunov_network(model, state_dim=2):x = torch.randn(1, state_dim, requires_grad=True) # 生成一个测试输入V = model(x)dot = make_dot(V, params=dict(model.named_parameters()))dot.format = 'png'dot.render('lyapunov_network') # 生成 PNG 图片dot.view() # 打开图像if __name__ == "__main__":trained_model = train_lyapunov_net()visualize_lyapunov_network(trained_model)
这段代码的核心目标是使用神经网络近似 Lyapunov 函数,并通过梯度信息优化其参数,以确保 Lyapunov 函数在物理系统的状态空间中满足稳定性条件。以下是详细的解析:
1. 代码整体架构
该代码主要包含 6 个部分:
- 定义 Lyapunov 函数近似器(MLP 神经网络)。
- 计算 Lyapunov 函数的梯度(用于优化)。
- 生成训练数据(模拟状态空间点)。
- 初始化网络权重(Xavier 初始化)。
- 训练 Lyapunov 网络(基于梯度信息优化 Lyapunov 函数)。
- 可视化网络结构(绘制计算图)。
2. 详细解析每个部分
(1) Lyapunov 函数近似器
class LyapunovNet(nn.Module):def __init__(self, input_dim, hidden_dim=32):super(LyapunovNet, self).__init__()self.model = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, 1) # 输出一个标量,表示Lyapunov函数值)def forward(self, x):return self.model(x)
📌 作用:
-
这是一个
多层感知机(MLP)
结构:
- 输入
x
代表系统状态变量(维度input_dim
)。 - 两个隐藏层,每层
hidden_dim=32
,激活函数为ReLU
。 - 输出是一个标量,表示 Lyapunov 函数值
V(x)
。
- 输入
📌 数学意义:
- 训练后,神经网络会学习到一个 Lyapunov 函数近似
V(x)
,用于判定系统稳定性。
(2) 计算 Lyapunov 函数的梯度
def compute_gradient(model, x):x.requires_grad_(True) # 使 x 可微分V = model(x) # 计算 Lyapunov 函数值grad_V = torch.autograd.grad(V.sum(), x, create_graph=True)[0] # 计算梯度return V, grad_V
📌 作用:
- 计算
V(x)
对x
的梯度∇V(x)
。 torch.autograd.grad()
自动计算梯度,用于 Lyapunov 函数优化。
📌 数学意义:
V ( x ) V(x) V(x)的梯度 ∇ V ( x ) ∇V(x) ∇V(x)
需要满足:
d V d t = ∇ V ( x ) ⋅ f ( x ) ≤ 0 \frac{dV}{dt} = \nabla V(x) \cdot f(x) \leq0 dtdV=∇V(x)⋅f(x)≤0
- 这个条件保证 Lyapunov 函数单调递减,从而保证系统稳定性。
(3) 生成训练数据
def generate_data(num_samples=1000, state_dim=2):return torch.randn(num_samples, state_dim) * 5 # 生成随机状态点
📌 作用:
- 生成服从标准正态分布的随机状态数据,用于训练 Lyapunov 神经网络。
📌 数学意义:
- 这些数据点可以看作是随机抽取的系统状态,用于训练神经网络使其学会合适的 Lyapunov 函数。
(4) 网络权重初始化
辑def init_weights(m):if isinstance(m, nn.Linear):torch.nn.init.xavier_uniform_(m.weight)if m.bias is not None:torch.nn.init.zeros_(m.bias)
📌 作用:
- 采用 Xavier(Glorot)初始化 线性层权重,保证网络初始梯度不会过大或过小。
bias
初始化为0
。
📌 数学意义:
-
Xavier 初始化
W ∼ U ( − 6 n i n + n o u t , 6 n i n + n o u t ) W \sim U\left(-\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}}\right) W∼U(−nin+nout6,nin+nout6)
- 其中 n i n n_{in} nin和 n o u t n_{out} nout分别是输入和输出的神经元数目。
(5) 训练 Lyapunov 网络
def train_lyapunov_net(state_dim=2, epochs=500, lr=0.001):model = LyapunovNet(input_dim=state_dim)model.apply(init_weights) # 重新初始化网络optimizer = optim.Adam(model.parameters(), lr=lr)loss_history = []for epoch in range(epochs):x = generate_data()V, grad_V = compute_gradient(model, x)# 修正损失函数loss = torch.mean(torch.relu(-grad_V.sum(dim=1))) + torch.mean(torch.relu(-V))optimizer.zero_grad()loss.backward()optimizer.step()loss_history.append(loss.item())if epoch % 50 == 0:print(f"Epoch {epoch}, Loss: {loss.item():.6f}")# 绘制损失曲线plt.plot(loss_history)plt.xlabel("Epoch")plt.ylabel("Loss")plt.title("Training Loss Curve")plt.grid()plt.show()return model
📌 作用:
-
优化 Lyapunov 函数
V(x)
,使其满足 Lyapunov 稳定性条件:
V(x) > 0
(Lyapunov 函数应该是正的)。∇V(x) ≤ 0
(Lyapunov 函数应该单调递减)。
📌 数学意义:
-
损失函数
L = E [ m a x ( 0 , − ∇ V ( x ) ) ] + E [ m a x ( 0 , − V ( x ) ) ] L=E[max(0,−∇V(x))]+E[max(0,−V(x))] L=E[max(0,−∇V(x))]+E[max(0,−V(x))]
- 其中:
torch.relu(-grad_V.sum(dim=1))
:强制∇V(x) ≤ 0
,确保 Lyapunov 单调递减。torch.relu(-V)
:确保V(x) ≥ 0
。
- 其中:
(6) 可视化 Lyapunov 神经网络
def visualize_lyapunov_network(model, state_dim=2):x = torch.randn(1, state_dim, requires_grad=True) # 生成一个测试输入V = model(x)dot = make_dot(V, params=dict(model.named_parameters()))dot.format = 'png'dot.render('lyapunov_network') # 生成 PNG 图片dot.view() # 打开图像
📌 作用:
- 使用
torchviz
绘制计算图,直观展示神经网络结构。
3. main-run
if __name__ == "__main__":trained_model = train_lyapunov_net()visualize_lyapunov_network(trained_model)
📌 作用:
- 训练 Lyapunov 网络。
- 可视化网络结构。
4. 总结
模块 | 作用 |
---|---|
LyapunovNet | 使用 MLP 近似 V(x) |
compute_gradient | 计算 ∇V(x) |
generate_data | 生成随机状态数据 |
init_weights | Xavier 权重初始化 |
train_lyapunov_net | 训练神经网络,使其满足 Lyapunov 条件 |
visualize_lyapunov_network | 可视化计算图 |
这个代码的核心思想是通过深度学习构建 Lyapunov 函数,确保 V(x)
单调递减,从而评估系统的瞬态稳定性。🔥
5.延伸
将以上的损失函数改为平方-以下为改后的损失函数公式展示
给定状态 x x x的动态系统:
d x d t = f ( x ) \frac{dx}{dt} = f(x) dtdx=f(x)
定义 Lyapunov 近似函数 V ( x ) V(x) V(x) 及其梯度:
∇ V = ∂ V ∂ x \nabla V = \frac{\partial V}{\partial x} ∇V=∂x∂V
损失函数由两个部分组成:
-
Lyapunov 下降约束(确保 d V d t ≤ 0 \frac{dV}{dt} \leq 0 dtdV≤0 ):
L decay = E x [ max ( 0 , − ∇ V ⋅ f ( x ) ) ] \mathcal{L}_{\text{decay}} = \mathbb{E}_x \left[ \max\left( 0, -\nabla V \cdot f(x) \right) \right] Ldecay=Ex[max(0,−∇V⋅f(x))]
其中 ∇ V ⋅ f ( x ) = ∑ i ∂ V ∂ x i f i ( x ) \nabla V \cdot f(x) = \sum_{i} \frac{\partial V}{\partial x_i} f_i(x) ∇V⋅f(x)=∑i∂xi∂Vfi(x)是 Lyapunov 函数关于时间的导数。
-
Lyapunov 函数非负性约束(确保 V ( x ) ≥ 0 V(x)≥0 V(x)≥0 ):
L positivity = E x [ V ( x ) 2 ] ] \mathcal{L}_{\text{positivity}} = \mathbb{E}_x \left[ V(x)^2 \right]] Lpositivity=Ex[V(x)2]]
这里我们使用平方损失 V ( x ) 2 V(x)^2 V(x)2 代替 ReLU 约束 m a x ( 0 , − V ( x ) ) max(0,−V(x)) max(0,−V(x)) 以增强稳定性。
总损失函数:
L = L decay + L positivity L = \mathcal{L}_{\text{decay}} + \mathcal{L}_{\text{positivity}} L=Ldecay+Lpositivity
该损失函数的优化目标是找到一个满足 Lyapunov 条件的近似函数 V ( x ) V(x) V(x),使得:
- Lyapunov 下降条件: d V d t ≤ 0 \frac{dV}{dt} \leq 0 dtdV≤0 适用于所有 x x x。
- Lyapunov 函数非负性: V ( x ) ≥ 0 V(x)≥0 V(x)≥0 确保稳定性分析的正确性。
这样,我们训练出的神经网络可以逼近一个合适的 Lyapunov 函数,从而用于评估瞬态稳定性
代码
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
from torchviz import make_dot# 1. Lyapunov 函数近似器(MLP 结构)
class LyapunovNet(nn.Module):def __init__(self, input_dim, hidden_dim=32):super(LyapunovNet, self).__init__()self.model = nn.Sequential(nn.Linear(input_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, hidden_dim),nn.ReLU(),nn.Linear(hidden_dim, 1) # 输出一个标量,表示Lyapunov函数值)def forward(self, x):return self.model(x)# 2. 定义系统动力学方程(如果已知)
def system_dynamics(x):return -x # 示例:简单的线性动力学 dx/dt = -x# 3. 计算 Lyapunov 函数的梯度
def compute_gradient(model, x):x.requires_grad_(True)V = model(x)grad_V = torch.autograd.grad(V.sum(), x, create_graph=True)[0]return V, grad_V# 4. 训练数据(随机生成一些状态数据)
def generate_data(num_samples=1000, state_dim=2):return torch.randn(num_samples, state_dim) * 5 # 扩大范围# 5. 网络权重初始化
def init_weights(m):if isinstance(m, nn.Linear):torch.nn.init.xavier_uniform_(m.weight)if m.bias is not None:torch.nn.init.zeros_(m.bias)# 6. 训练 Lyapunov 网络并绘制损失曲线
def train_lyapunov_net(state_dim=2, epochs=500, lr=0.001):model = LyapunovNet(input_dim=state_dim)model.apply(init_weights) # 重新初始化网络optimizer = optim.Adam(model.parameters(), lr=lr)loss_history = []for epoch in range(epochs):x = generate_data()V, grad_V = compute_gradient(model, x)dx_dt = system_dynamics(x) # 获取系统的动态方程# 1. 约束 Lyapunov 下降条件: dV/dt = ∇V · f(x) ≤ 0lyapunov_decay = torch.mean(torch.relu(-(grad_V * dx_dt).sum(dim=1)))# 2. 确保 Lyapunov 函数 V(x) 是非负的lyapunov_positivity = torch.mean(V**2) # 使 V(x) 逼近 0 而不是仅仅大于 0loss = lyapunov_decay + lyapunov_positivityoptimizer.zero_grad()loss.backward()optimizer.step()loss_history.append(loss.item())if epoch % 50 == 0:print(f"Epoch {epoch}, Loss: {loss.item():.6f}")# 绘制损失曲线plt.plot(loss_history)plt.xlabel("Epoch")plt.ylabel("Loss")plt.title("Training Loss Curve")plt.grid()plt.show()return model# 7. 可视化神经网络计算图
def visualize_lyapunov_network(model, state_dim=2):x = torch.randn(1, state_dim, requires_grad=True) # 生成一个测试输入V = model(x)dot = make_dot(V, params=dict(model.named_parameters()))dot.format = 'png'dot.render('lyapunov_network') # 生成 PNG 图片dot.view() # 打开图像if __name__ == "__main__":trained_model = train_lyapunov_net()visualize_lyapunov_network(trained_model)
相关文章:

DNN(深度神经网络)近似 Lyapunov 函数
import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器(MLP 结构) class LyapunovNet(nn.Module):def __init__(self, input_dim…...

128陷阱
首先我们了解一下关于包装器类型 java是面向对象的语言,但基本类型并不是面向对象的,从而出现了包装器类型,并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型,它相当于将…...

PromptSource和LangChain哪个更好
目录 1. 设计目标与定位 PromptSource LangChain 2. 功能对比 3. 优缺点分析 PromptSource LangChain 4. 如何选择? 5. 总结 PromptSource 和 LangChain 是两个在自然语言处理(NLP)领域非常有用的工具,但它们的设计目标和…...

构成正方形的数量:算法深度剖析与实践
目录 引言算法核心概念 定义正方形的构成条件数据结构与输入形式算法数学原理 几何关系的数学表达坐标运算与判定逻辑Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂度优化思…...

Redis持久化-秒杀系统设计
在构建高性能、高可用的系统时,Redis 作为缓存和消息队列的角色越来越重要。在一些场景下,我们还需要将 Redis 的数据进行持久化,以确保数据的安全性和恢复能力。除此之外,秒杀系统也越来越成为电商、抢购等平台的核心功能之一。本…...

音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
一、引言 通过Wireshark可以抓取RTP数据包,该软件可以从Wireshark Go Deep 下载。 二、通过Wireshark抓取RTP数据包 首先通过FFmpeg将一个媒体文件转推RTP,生成RTP流: ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp …...

OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
爬虫与 OpenAI 模型结合,不仅能高效地抓取并分析海量数据,还能通过 NLP 技术生成洞察、摘要,极大提高业务效率。以下是一些实际工作中具有较高价值的应用案例: 1. 电商价格监控与智能分析 应用场景: 电商企业需要监控…...

SpringUI Web高端动态交互元件库
Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合,旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍: 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…...

解密企业安全密码:密钥管理服务如何重塑数据保护?
在数字化时代,数据是企业最宝贵的资产之一。然而,随着网络威胁的不断升级和数据泄露事件的频繁发生,如何保护企业数据的安全已成为每个组织面临的紧迫问题。传统的安全措施往往无法应对复杂的威胁环境,密钥管理服务作为企业信息安…...

基于keepalived+GTID半同步主从复制的高可用MySQL集群
文章目录 项目架构图项目名称项目环境项目描述ip地址规划项目步骤一.安装好8台全新的centos7.9的系统,关闭firewalld和selinux,配置每台主机的静态ip地址,设置每台主机对应的主机名。1、关闭firewalld2.关闭seLinux3.配置每台主机静态ip地址4…...

图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案
办公文档处理:在企业日常办公中,经常会遇到大量的扫描文档(如发票、合同、报表等)以图片或 PDF 格式存储。需要将这些文档中的特定区域信息(如发票金额、合同条款、报表数据等)提取出来,整理到 …...

Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…...

从零手写Spring IoC容器(二):bean的定义与注册
从零手写Spring IoC容器(二):bean的定义与注册 一. 回顾简单容器的不足之处 在第一章中,我们实现了一个最简单的 IoC 容器,但该版本存在诸多不足,例如: Bean 的管理方式过于简单,…...

《大模型面试宝典》(2025版) 发布了
基于去年我们写的《大模型面试宝典》(2024版)的基础上,我根据自己实践经验和星球小伙伴的面经分享总结推出《大模型面试宝典》(2025版),共计52w字。 与去年相比,内容增加了星球成员面试真题分享、大模型最新考试要点总结、DeepSeek 项目实战…...

AWS门店人流量数据分析项目的设计与实现
这是一个AWS的数据分析项目,关于快消公司门店手机各个门店进店人流量和各个产品柜台前逗留时间(利用IoT设备采集)和销售数据之间的统计分析,必须用到但不限于Amazon Kensis Data Stream,Spark Streaming,Sp…...

出租车特殊计费表算法解析与实现
目录 引言算法核心概念 特殊计费规则解析数据类型与输入输出算法数学原理 数字位判断与处理逻辑数值转换与累加计算算法框架图Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂…...

文档解析技术:如何高效提取PDF扫描件中的文字与表格信息?
想要高效提取PDF扫描件中的文字与表格信息,通常需要借助专业的工具或在线服务,以下是一些可行的方法: 预处理扫描件:在提取文字之前,尽量确保扫描件的图像质量清晰。如果扫描件模糊或有污渍,可以使用图像处…...

【2】高并发导出场景下,服务器性能瓶颈优化方案-异步导出
Java 异步导出是一种在处理大量数据或复杂任务时优化性能和用户体验的重要技术。 1. 异步导出的优势 异步导出是指将导出操作从主线程中分离出来,通过后台线程或异步任务完成数据处理和文件生成。这种方式可以显著减少用户等待时间,避免系统阻塞&#x…...

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力
欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力 【DeepSeek论…...

frida 通过 loadLibrary0 跟踪 System.loadLibrary
static {System.loadLibrary("libxxx.so"); }在 ndk 开发中,常见的实践是在 static 代码块里调用 loadLibrary 加载动态库。由于 apk 从 java 层开始启动,过早地 hook 原生代码会找不到函数。所以一种常见做法是在 loadLibrary 的 hook 回调里…...

【2025最新计算机毕业设计】基于SSM的智能停车场管理系统【提供源码+答辩PPT+文档+项目部署】(高质量源码,可定制,提供文档,免费部署到本地)
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
项目介绍 本课程演示的是一款Python爬虫人口老龄化大数据分析平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...

文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)
昨天搞了半天 Animagine XL V3.1,发现市面上很多教程只是授之以鱼,并没有授之以渔的。也是,拿来赚钱不好吗,闲鱼上部署一个 Deepseek 都能要两百块。这里我还是想写篇文章介绍一下,虽不全面,但是尽量告诉你…...

快速提取Excel工作簿中所有工作表的名称?
大家好,我是小鱼。 在Excel表格中如何快速提取工作簿中所有工作表的名称?这个问题在日常工作中也经常遇到,比如说经常使用的INDIRECT函数跨工作表汇总或者制作类似于导航的工作表快捷跳转列表,就需要每个工作表的名称。如果工作表…...

【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 一:开发系统介绍 开发系统概述 MES2L676-100HP开发板采用紫光创 logos2系列 FPGA,型号&#x…...

Node.JS 版本管理工具 Fnm 安装及配置(Windows)
Fnm 安装及配置(Windows) Fnm(Fast Node Manager)?? 一个快速而简单的 Node.js 版本管理工具,使用 Rust 编写。 1 安装 官网:Fnm(镜像网站 )。 下载:Fnm(…...

labview通过时间计数器来设定采集频率
在刚接触labview的时候,笔者通常用定时里的等待函数来实现指令的收发,但是当用到的收发消息比较多时就出现了卡顿,卡死的情况,这是因为当用队列框架时,程序卡在了其中的一个分支里,等通过相应的延时后才可以…...

汇编JCC条件跳转指令记忆
汇编中的条件跳转指令(JCC): 1. 理解标志寄存器 JCC 指令依赖于标志寄存器(FLAGS)的状态,常见的标志位有: ZF(Zero Flag):结果为0时置1。 CF(Ca…...

HTML排版标签、语义化标签、块级和行内元素详解
目录 前言 一、HTML中的排版标签 1. 文本相关标签 1.1 标题标签 ~ 1.2 段落标签 1.3 强调和加粗 1.4 换行标签 1.5 水平线标签 二、HTML中的语义化标签 2.1 语义化标签概述 2.2 常见的语义化标签 示例(核心代码部分): 三、HTM…...

【回溯+剪枝】单词搜索,你能用递归解决吗?
文章目录 79. 单词搜索解题思路:回溯(深搜) 剪枝 79. 单词搜索 79. 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 …...