文心一言 VS 讯飞星火 VS chatgpt (351)-- 算法导论24.1 2题

二、证明推论24.3。推论 24.3 的内容是设 G = ( V , E ) G=(V,E) G=(V,E)是一带权重的源结点为 s s s的有向图,其权重函数为 ω : E → R ω:\boldsymbol{E→R} ω:ER。假定图 G G G不包含从源结点 s s s可以到达的权重为负值的环路,则对于所有结点 v ∈ V v∈V vV,存在一条从源结点 s s s到结点 v v v的路径当且仅当BELLMAN-FORD算法终止时有 v . d < ∞ v.d<∞ v.d<。如果要写代码,请用go语言。

文心一言:

为了证明推论 24.3 并用 Go 语言实现 Bellman-Ford 算法,我们首先需要理解 Bellman-Ford 算法的基本思想和它如何用于处理带有负权边的图。Bellman-Ford 算法能够处理图中存在负权边的情况,但不能处理负权环(即从某点出发经过一系列边回到该点且总权重为负的环)。

Bellman-Ford 算法的基本思想

  1. 初始化所有顶点的最短路径估计值(d 值)为正无穷(除了源点 s,其 d 值为 0)。
  2. 对图中的每条边进行 V-1 次松弛操作(V 是顶点数)。每次松弛操作尝试通过当前边来减少起点到终点的最短路径估计值。
  3. 检查图中是否存在负权环:再次遍历所有边,如果还能通过某条边减少某个顶点的 d 值,则说明图中存在负权环。

Go 语言实现

以下是 Go 语言实现的 Bellman-Ford 算法,包括检测负权环的功能:

package mainimport ("fmt""math"
)type Edge struct {from, to intweight   float64
}type Graph struct {vertices intedges    []Edge
}func NewGraph(vertices int) *Graph {return &Graph{vertices: vertices,edges:    make([]Edge, 0),}
}func (g *Graph) AddEdge(from, to int, weight float64) {g.edges = append(g.edges, Edge{from, to, weight})
}func bellmanFord(g *Graph, s int) ([]float64, bool) {distances := make([]float64, g.vertices)for i := range distances {distances[i] = math.Inf(1) // 初始化为正无穷}distances[s] = 0for i := 0; i < g.vertices-1; i++ {for _, e := range g.edges {u, v, w := e.from, e.to, e.weightif distances[u] != math.Inf(1) && distances[u]+w < distances[v] {distances[v] = distances[u] + w}}}// 检测负权环for _, e := range g.edges {u, v, w := e.from, e.to, e.weightif distances[u] != math.Inf(1) && distances[u]+w < distances[v] {return distances, false // 存在负权环}}return distances, true // 无负权环
}func main() {g := NewGraph(5)g.AddEdge(0, 1, -1)g.AddEdge(0, 2, 4)g.AddEdge(1, 2, 3)g.AddEdge(1, 3, 2)g.AddEdge(1, 4, 2)g.AddEdge(3, 2, 5)g.AddEdge(3, 1, 1)g.AddEdge(4, 3, -3)distances, hasNoNegativeCycle := bellmanFord(g, 0)if hasNoNegativeCycle {fmt.Println("No negative cycle detected.")for i, d := range distances {if d != math.Inf(1) {fmt.Printf("Distance from 0 to %d: %.2f\n", i, d)}}} else {fmt.Println("Negative cycle detected.")}
}

推论 24.3 的证明

  • 充分性:如果 Bellman-Ford 算法终止时 v.d < ∞,则根据算法逻辑,至少存在一条从源点 sv 的路径,其权重和不超过 v.d
  • 必要性:如果存在一条从源点 sv 的路径,且图中没有从 s 可达的负权环,则由于 Bellman-Ford 算法能够正确处理负权边,它最终会计算出这条路径的权重和(或更小),因此 v.d 不会是正无穷。

这个证明基于 Bellman-Ford 算法的正确性和它处理负权边的能力。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

讯飞星火:

首先,我们需要理解BELLMAN-FORD算法的基本思想。BELLMAN-FORD算法是一种用于在带权有向图中查找从源结点到其他所有结点的最短路径的算法。它的主要思想是通过不断地放松边来更新结点的距离值,直到没有更多的更新可以进行或者进行了|V|-1次迭代(其中|V|是图中结点的数量)。

根据推论24.3,我们可以得出以下结论:如果图G不包含从源结点s可以到达的权重为负值的环路,那么对于所有结点v∈V,存在一条从源结点s到结点v的路径当且仅当BELLMAN-FORD算法终止时有v.d<∞。

下面是用Go语言实现的BELLMAN-FORD算法:

package mainimport ("fmt""math"
)type Edge struct {src  intdest intweight float64
}func BellmanFord(vertices int, edges []Edge, source int) []float64 {// 初始化距离数组,将所有距离设置为无穷大,除了源结点的距离为0distance := make([]float64, vertices)for i := range distance {distance[i] = math.Inf(1)}distance[source] = 0// 进行|V|-1次迭代for i := 0; i < vertices-1; i++ {for _, edge := range edges {if distance[edge.src] != math.Inf(1) && distance[edge.src]+edge.weight < distance[edge.dest] {distance[edge.dest] = distance[edge.src] + edge.weight}}}// 检查负权重环路for _, edge := range edges {if distance[edge.src] != math.Inf(1) && distance[edge.src]+edge.weight < distance[edge.dest] {return nil // 存在负权重环路,返回nil}}return distance
}func main() {vertices := 5edges := []Edge{{0, 1, -1},{0, 2, 4},{1, 2, 3},{1, 3, 2},{1, 4, 2},{3, 2, 5},{3, 1, 1},{4, 3, -3},}source := 0distance := BellmanFord(vertices, edges, source)if distance == nil {fmt.Println("存在负权重环路")} else {fmt.Println("从源结点", source, "到各结点的最短距离:")for i, d := range distance {fmt.Printf("结点 %d: %f
", i, d)}}
}

这段代码首先定义了一个Edge结构体,用于表示图中的边。然后实现了BellmanFord函数,该函数接受顶点数、边的列表和源结点作为参数,并返回一个包含从源结点到每个结点最短距离的切片。如果存在负权重环路,则返回nil。最后,main函数中创建了一个示例图并调用BellmanFord函数来计算最短距离。

360智脑:

要证明推论24.3,我们需要先理解Bellman-Ford算法的原理和步骤。Bellman-Ford算法是一种解决单源最短路径问题的算法,它可以处理带有负权边的图。算法的主要思想是对图中的边进行 ∣ V ∣ − 1 |V|-1 V1次松弛操作,每次松弛操作都会尝试更新从源节点 s s s到其他节点的最短路径估计值。如果在 ∣ V ∣ − 1 |V|-1 V1次松弛操作后,还能继续更新路径长度,那么说明图中存在一个负权环路。

现在我们来证明推论24.3:

证明:

( ⇒ \Rightarrow ) 假设存在一条从源结点 s s s到结点 v v v的路径。由于图中没有从 s s s可达的负权环路,根据Bellman-Ford算法的原理,经过 ∣ V ∣ − 1 |V|-1 V1次松弛操作后,从 s s s v v v的最短路径上的每条边都会被松弛至少一次。因此,最终 v . d v.d v.d会被更新为一个有限值,即 v . d < ∞ v.d < \infty v.d<

( ⇐ \Leftarrow ) 假设在Bellman-Ford算法终止时,有 v . d < ∞ v.d < \infty v.d<。这意味着在算法执行过程中,至少有一次松弛操作使得 v . d v.d v.d被更新。由于每次松弛操作都是基于已经更新的最短路径估计值进行的,这表明存在一条从 s s s v v v的路径,使得路径上的边能够被松弛。因此,存在一条从源结点 s s s到结点 v v v的路径。

综上所述,对于所有结点 v ∈ V v \in V vV,存在一条从源结点 s s s到结点 v v v的路径当且仅当BELLMAN-FORD算法终止时有 v . d < ∞ v.d < \infty v.d<

至于用Go语言实现Bellman-Ford算法,以下是一个简单的实现示例:

package mainimport ("fmt"
)type Edge struct {from, to   intweight     float64
}func BellmanFord(graph []Edge, numVertices int, source int) ([]float64, bool) {dist := make([]float64, numVertices)for i := range dist {dist[i] = 1e9 // 初始化为无穷大}dist[source] = 0 // 源节点距离为0for i := 0; i < numVertices-1; i++ {for _, edge := range graph {if dist[edge.from]+edge.weight < dist[edge.to] {dist[edge.to] = dist[edge.from] + edge.weight}}}// 检查是否存在负权环for _, edge := range graph {if dist[edge.from]+edge.weight < dist[edge.to] {return nil, true // 存在负权环}}return dist, false
}func main() {edges := []Edge{{0, 1, -1},{0, 2, 4},{1, 2, 3},{1, 3, 2},{1, 4, 2},{3, 2, 5},{3, 1, 1},{4, 3, -3},}distances, hasNegativeCycle := BellmanFord(edges, 5, 0)if hasNegativeCycle {fmt.Println("The graph contains a negative cycle.")} else {fmt.Println("Shortest distances from the source:")for v, d := range distances {fmt.Printf("Vertex %d: %.1f\n", v, d)}}
}

在这个Go代码中,我们定义了一个Edge结构体来表示图中的边,然后实现了BellmanFord函数来计算从源节点到所有其他节点的最短路径。如果算法检测到负权环,它会返回true。否则,它会返回每个节点的最短路径距离。

智谱清言:

推论24.3的证明可以通过展示BELLMAN-FORD算法的正确性来完成。BELLMAN-FORD算法能够处理带有负权重边的图,只要图中没有从源点出发的负权重环路。以下是推论24.3的证明,以及Go语言实现BELLMAN-FORD算法的代码。

推论24.3的证明:

必要性:如果存在一条从源点 s s s到结点 v v v的路径,那么BELLMAN-FORD算法会更新 v v v的距离,使得 v . d v.d v.d代表从 s s s v v v的最短路径长度。因为算法在图中没有负权重环路的情况下运行,它可以在最多 ∣ V ∣ − 1 |V|-1 V1次迭代后找到所有结点的最短路径,所以如果存在一条路径,那么 v . d v.d v.d必定小于无穷大。
充分性:如果BELLMAN-FORD算法终止时 v . d < ∞ v.d<∞ v.d<,这意味着在算法执行过程中找到了至少一条到达 v v v的路径,且这条路径的权重和不是负无穷。由于算法假定图中不存在从源点出发的负权重环路,所有到达 v v v的路径的权重和都是有限的,因此必然存在一条从 s s s v v v的路径。
下面是Go语言实现BELLMAN-FORD算法的代码:

package main
import ("fmt""math"
)
// Edge 定义了图中的边
type Edge struct {from   intto     intweight int
}
// BellmanFord 算法实现
func BellmanFord(edges []Edge, numVertices int, source int) ([]int, bool) {// 初始化距离数组,所有距离设置为无穷大dist := make([]int, numVertices)for i := range dist {dist[i] = math.MaxInt64}dist[source] = 0 // 源点到自身的距离为0// 松弛操作,执行V-1次for i := 0; i < numVertices-1; i++ {for _, edge := range edges {if dist[edge.from] != math.MaxInt64 && dist[edge.from]+edge.weight < dist[edge.to] {dist[edge.to] = dist[edge.from] + edge.weight}}}// 检测负权重环路for _, edge := range edges {if dist[edge.from] != math.MaxInt64 && dist[edge.from]+edge.weight < dist[edge.to] {// 发现负权重环路return nil, false}}return dist, true
}
func main() {// 示例图的边和顶点数edges := []Edge{{0, 1, -1},{0, 2, 4},{1, 2, 3},{1, 3, 2},{1, 4, 2},{3, 2, 5},{3, 1, 1},{4, 3, -3},}numVertices := 5source := 0dist, noNegativeCycle := BellmanFord(edges, numVertices, source)if noNegativeCycle {fmt.Println("不存在负权重环路,最短路径如下:")for v := 0; v < numVertices; v++ {if dist[v] == math.MaxInt64 {fmt.Printf("从源点 %d 到顶点 %d 没有路径\n", source, v)} else {fmt.Printf("从源点 %d 到顶点 %d 的最短距离是 %d\n", source, v, dist[v])}}} else {fmt.Println("图中存在负权重环路")}
}

在这段代码中,我们定义了一个Edge结构体来表示图中的边,然后实现了BellmanFord函数来执行算法。如果图中存在负权重环路,则函数返回false,否则返回每个顶点到源点的最短路径长度。在main函数中,我们创建了一个示例图,并调用了BellmanFord函数来演示算法的使用。

天工:

要证明推论24.3,我们首先需要理解Bellman-Ford算法的工作原理,然后证明两个方向:

  1. 如果存在一条从源结点 (s) 到结点 (v) 的路径,则Bellman-Ford算法终止时有 (v.d < \infty)。
  2. 如果Bellman-Ford算法终止时有 (v.d < \infty),则存在一条从源结点 (s) 到结点 (v) 的路径。

证明方向一:如果存在一条从源结点 (s) 到结点 (v) 的路径,则Bellman-Ford算法终止时有 (v.d < \infty)。

  • Bellman-Ford算法从源结点 (s) 开始,通过松弛操作逐步更新所有结点的最短路径估计值。
  • 由于图 (G) 不包含从源结点 (s) 可以到达的权重为负值的环路,算法在 (|V|-1) 轮之后将找到所有结点的最短路径。
  • 如果存在从 (s) 到 (v) 的路径,那么经过 (|V|-1) 轮松弛操作后,(v.d) 将被更新到从 (s) 到 (v) 的最短路径长度,因此 (v.d < \infty)。

证明方向二:如果Bellman-Ford算法终止时有 (v.d < \infty),则存在一条从源结点 (s) 到结点 (v) 的路径。

  • 如果 (v.d < \infty),这意味着 (v) 的最短路径估计值不是无穷大。
  • 由于算法的构造,(v.d) 的值只能通过从 (s) 到 (v) 的路径的松弛操作来减少。
  • 因此,存在一系列边,它们的起点从 (s) 开始,最终到达 (v),且这些边的总权重不超过 (v.d)。
  • 这些边构成了一条从 (s) 到 (v) 的路径。

为了展示Bellman-Ford算法的实现,以下是用Go语言的一个简单示例:

package mainimport ("fmt"
)type Edge struct {from, to   intweight     int
}func BellmanFord(edges []Edge, V int, s int) {// Initialize distance from s to all other vertices as INFINITEd := make([]int, V)for i := range d {d[i] = 10000 // Using 10000 as a large number representing infinity}d[s] = 0// Relax all edges |V| - 1 times. A simple shortest path from src to any// other vertex can have at-most |V| - 1 edgesfor i := 1; i <= V-1; i++ {for _, edge := range edges {u, v, weight := edge.from, edge.to, edge.weightif d[u] != 10000 && d[u]+weight < d[v] {d[v] = d[u] + weight}}}// check for negative-weight cycles. The above step guarantees shortest// distances if graph doesn't contain negative weight cycle. If we get a// shorter path, then there is a cycle.for _, edge := range edges {u, v, weight := edge.from, edge.to, edge.weightif d[u] != 10000 && d[u]+weight < d[v] {fmt.Println("Graph contains negative weight cycle")return}}// If no negative weight cycle is detected print the distancefmt.Println("Vertex   Distance from Source")for i := range d {fmt.Printf("%d \t\t %d\n", i, d[i])}
}func main() {edges := []Edge{{0, 1, -1},{0, 2, 4},{1, 2, 3},{1, 3, 2},{1, 4, 2},{3, 2, 5},{3, 1, 1},{4, 3, -3},}V := 5 // Number of vertices in the graphBellmanFord(edges, V, 0)
}

这个代码示例展示了如何使用Bellman-Ford算法来计算从源结点 (s) 到所有其他结点的最短路径。

chatgpt:

推论 24.3 说明了在不包含从源结点到达负权重环的图中,BELLMAN-FORD 算法的终止条件是当且仅当存在一条从源结点到达目标结点的路径时,目标结点的最短距离标记 v . d v.d v.d 为有限值。

以下是用 Go 语言编写 BELLMAN-FORD 算法来证明这个推论:

package mainimport ("fmt"
)// 边的结构体
type Edge struct {src, dest, weight int
}// 图的结构体
type Graph struct {V, E int   // V 为结点数,E 为边数edges []Edge // 存储所有的边
}// Bellman-Ford 算法函数
func BellmanFord(g Graph, src int) {V := g.VE := g.Edist := make([]int, V)// 初始化距离数组for i := 0; i < V; i++ {dist[i] = 99999 // 设置一个较大的值表示无穷大}dist[src] = 0// 松弛所有的边for i := 1; i < V; i++ {for j := 0; j < E; j++ {u := g.edges[j].srcv := g.edges[j].destweight := g.edges[j].weightif dist[u]+weight < dist[v] {dist[v] = dist[u] + weight}}}// 判断是否存在负权重环for i := 0; i < E; i++ {u := g.edges[i].srcv := g.edges[i].destweight := g.edges[i].weightif dist[u]+weight < dist[v] {fmt.Println("图包含负权重环!")return}}// 输出最短距离结果for i := 0; i < V; i++ {fmt.Printf("结点 %d 的最短距离为 %d\n", i, dist[i])}
}func main() {g := Graph{V: 5, E: 8, edges: []Edge{{0, 1, 6}, {0, 2, 7}, {1, 2, 8},{1, 3, 5}, {1, 4, -4}, {2, 3, -3},{2, 4, 9}, {3, 4, 7},}}src := 0 // 源结点为 0BellmanFord(g, src)
}

这段代码演示了如何使用 Go 语言实现 BELLMAN-FORD 算法来找到源结点到其他结点的最短距离,并判断图中是否包含负权重环。

kimi:

要证明推论24.3,我们首先需要理解BELLMAN-FORD算法的工作原理和它如何保证在没有负权重环的情况下找到从源点到其他所有可达结点的最短路径。

BELLMAN-FORD算法的基本思想是迭代地松弛图中的所有边,尝试更新每个结点的距离估计值。算法重复这个过程V-1次(V是图中结点的数量),每次迭代都尝试通过图中的每条边来更新距离。如果在第V次迭代后,所有边的松弛操作都没有进一步减少任何结点的距离估计值,那么算法就找到了从源点到所有可达结点的最短路径。

证明步骤:

  1. 初始化: 算法开始时,源点s的距离设置为0,所有其他结点的距离设置为无穷大(表示它们暂时不可达)。

  2. 松弛操作: 对于每条边(u, v),如果通过u到达v的距离比当前记录的v的距离小,那么就更新v的距离。即,如果 v.d > u.d + ω(u, v),则更新 v.d = u.d + ω(u, v)

  3. 迭代: 算法重复上述松弛操作V-1次。

  4. 检测负权重环: 在第V次迭代中,如果还有边可以松弛,那么图中存在从源点可达的负权重环。

  5. 结论: 如果算法没有检测到负权重环,那么对于所有结点v,如果 v.d < ∞,则存在一条从源点s到v的路径。反之,如果 v.d = ∞,则不存在这样的路径。

证明:

  • 必要性: 如果存在一条从s到v的路径,那么在算法的某次迭代中,这条路径上的边会被松弛,从而更新v的距离为一个有限值。

  • 充分性: 如果v的距离在算法结束时是有限值,那么在算法的某次迭代中,v的距离被更新为一个有限值。这意味着存在一条从s到v的路径,使得每次通过这条路径上的边进行松弛操作时,都能逐步减少v的距离,直到达到最小值。

代码实现(Go语言):

package mainimport ("fmt""math"
)type Edge struct {to, weight int
}type Graph struct {V   intadj [][]Edge
}func (g *Graph) BellmanFord(s int) []int {dist := make([]int, g.V)for i := range dist {dist[i] = math.MaxInt32}dist[s] = 0for i := 0; i < g.V-1; i++ {for _, edge := range g.adj {if dist[edge.to] > dist[edge.from]+edge.weight {dist[edge.to] = dist[edge.from] + edge.weight}}}// Check for negative-weight cyclesfor _, edge := range g.adj {if dist[edge.to] > dist[edge.from]+edge.weight {fmt.Println("Graph contains a negative-weight cycle")return nil}}return dist
}func main() {// Example usageg := Graph{V: 5}g.adj = [][]Edge{{Edge{1, 10}, Edge{2, 3}, Edge{3, 1}},{Edge{2, 1}, Edge{4, 2}},{Edge{3, 4}, Edge{4, 2}},{Edge{4, 3}},{},}dist := g.BellmanFord(0)if dist != nil {fmt.Println("Distances from source vertex:", dist)}
}

这段代码实现了BELLMAN-FORD算法,并在主函数中提供了一个示例图的使用。算法会返回从源点到所有其他结点的距离数组,如果检测到负权重环,则会打印出相应的信息。

混元:

首先,我们需要了解Bellman-Ford算法的基本原理。Bellman-Ford算法是一种求解单源最短路径问题的算法,它可以处理带有负权重边的图。算法的基本思想是对所有边进行V-1次松弛操作,其中V是图中顶点的数量。在每次松弛操作中,算法会遍历所有的边,并尝试通过这些边来更新顶点的距离。

现在我们来证明推论24.3。假设图G不包含从源结点s可以到达的权重为负值的环路。

(1) 假设存在一条从源结点s到结点v的路径,那么根据Bellman-Ford算法的原理,经过V-1次松弛操作后,结点v的距离会被更新为一个有限值,即v.d < ∞。

(2) 反过来,假设Bellman-Ford算法终止时有v.d < ∞。那么在算法的V-1次松弛操作中,结点v的距离至少被更新了一次。这意味着存在一条从源结点s到结点v的路径。

因此,对于所有结点v∈V,存在一条从源结点s到结点v的路径当且仅当Bellman-Ford算法终止时有v.d < ∞。

下面是用Go语言实现的Bellman-Ford算法:

package mainimport ("fmt""math"
)type Edge struct {from, to intweight   float64
}func BellmanFord(edges []Edge, s int, n int) ([]float64, error) {dist := make([]float64, n)for i := range dist {dist[i] = math.Inf(1)}dist[s] = 0for i := 0; i < n-1; i++ {for _, edge := range edges {if dist[edge.from]+edge.weight < dist[edge.to] {dist[edge.to] = dist[edge.from] + edge.weight}}}for _, edge := range edges {if dist[edge.from]+edge.weight < dist[edge.to] {return nil, fmt.Errorf("图中存在负权重环路")}}return dist, nil
}func main() {edges := []Edge{{0, 1, 4},{0, 2, 5},{1, 3, 6},{1, 4, -2},{2, 1, -2},{3, 4, 1},{4, 3, 2},}s := 0n := 5dist, err := BellmanFord(edges, s, n)if err != nil {fmt.Println(err)} else {fmt.Println("各顶点到源点的最短距离:", dist)}
}

这段代码实现了Bellman-Ford算法,并可以处理带有负权重边的图。如果图中存在负权重环路,算法会返回错误信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144790.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

mat (Eclipse Memory Analyzer Tool)使用以及详解

前言 在Java开发中&#xff0c;内存问题往往不易被发现&#xff0c;但它们可能导致应用性能下降甚至崩溃。Eclipse Memory Analyzer Tool&#xff08;MAT&#xff09;是一个强大的开源工具&#xff0c;专门用于分析Java堆转储&#xff08;heap dumps&#xff09;文件&#xff…

js 将二进制文件流,下载为excel文件

吃西瓜 现成的粒子 二进制流&#xff0c;是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同&#xff0c; 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频、可执行文件、压缩文件等&#xff0c;而文本文…

Acwing Hash表

哈希表的作用&#xff1a;把一个比较大的空间&#xff0c;通过一个函数映射到一个比较小的空间 一般做哈希运算时&#xff0c;取一个质数作为模&#xff0c;会使得冲突的概率降低。 哈希表的冲突解决方法&#xff1a; 拉链法开放寻址法 下面详细介绍这两种方法的原理及其实现…

自制网络连接工具(支持tcpudp,客户端服务端)

自制网络连接工具&#xff08;支持tcp/udp,客户端/服务端&#xff09; 将网络连接工具制作成共享库 network.h #ifndef NETWORK_H #define NETWORK_H#include<netinet/in.h> #include<sys/socket.h> #include<stdbool.h> typedef struct Network {int type…

JAVA基础:包装类,BigInteger , BigDecimal

1 包装类 java是一种面向对象的编程语言 对象都是由类产生的。 8种基本类型对java面向对象的特性有所破坏 jdk就提供了8种基本类型所对应的类的表示&#xff0c;称为&#xff1a;包装类 理论上来讲&#xff1a;类属性使用包装类定义&#xff0c;方法中的局部变量使用基本类型…

javamail发邮件:配置SMTP发送邮件的步骤?

javamail发邮件的教程指南&#xff1f;怎么用JavaMail发送邮件&#xff1f; JavaMail API 是 Java 平台上用于发送和接收电子邮件的标准 API&#xff0c;它提供了一套丰富的类和方法&#xff0c;使得开发者能够轻松地实现邮件发送功能。AokSend将详细介绍如何使用 JavaMail AP…

基于atlas环境下YOLOV7的睡岗识别

做到这里&#xff0c;其实只是想探索下新的检测框架、探索下atlas下ACL的推理方式。整个过程持续了3-4周把&#xff0c;回顾一下&#xff0c;感觉还是需要一些技巧才能拿下&#xff0c;如果没有任何经验的是断难搞定此代码的。主要基于华为的官方例子&#xff0c;里面修改了原始…

峟思科普:溢流坝是什么?溢流坝承载着哪些作用

水坝系统中的一项关键组成部分——溢洪结构&#xff0c;又常被称作溢洪道&#xff0c;其独特功能在于精准调控水库水位&#xff0c;确保水坝安全。当水库蓄水量超过预设阈值&#xff0c;该结构能够引导多余水流平稳穿越坝体&#xff0c;注入下游河床。此过程中&#xff0c;坝前…

Snapchat API 访问:Objective-C 实现示例

Snapchat 是一个流行的社交媒体平台&#xff0c;它允许用户发送和接收短暂存在的图片和视频。对于开发者来说&#xff0c;访问 Snapchat API 可以为应用程序添加独特的社交功能。本文将介绍如何在 Objective-C 中实现对 Snapchat API 的访问&#xff0c;并提供一个详细的代码示…

uni-app页面调用接口和路由(四)

文章目录 一、路由二、页面调用接口二、路由跳转1.uni.navigateTo(OBJECT)2.uni.redirectTo(OBJECT)3.uni.reLaunch(OBJECT)4.uni.switchTab(OBJECT)5.uni.navigateBack(OBJECT) 总结 一、路由 路由配置 uni-app页面路由为框架统一管理&#xff0c;开发者需要在pages.json里配…

yolo自动化项目实例解析(四)ui页面整理1 (1.85)

我们在上一章整理main.py 的if __name__ __main__: 内容还留下面这一段&#xff0c; from PyQt5.QtWidgets import *from lanrenauto.moni.moni import *from PyQt5.QtGui import *app QApplication(sys.argv) # 初始化Qt应用ratio screen_width / 2560 # 分辨率比例# 设…

centos 安装VNC,实现远程连接

centos 安装VNC&#xff0c;实现远程连接 VNC(Virtual Network Computing)是一种远程控制软件&#xff0c;可以实现通过网络远程连接计算机的图形界面。 服务器安装VNC服务 yum install -y tigervnc-server*启动VNC服务&#xff0c;过程中需要输入连接密码 vncserver :1查看…

全国网安众测招募计划启动啦,欢迎加入~

在数字化时代&#xff0c;网络安全已成为维护社会稳定、促进经济发展的基石。为了积极响应国家关于加强网络安全工作的号召&#xff0c;确保某区域关键信息系统的稳固运行&#xff0c;我们特此启动一项网络安全众测活动。该活动旨在通过汇聚业界有经验的网络安全攻防人才&#…

RetrievalAttention——提高 LLM 处理长上下文的效率

概述 论文地址&#xff1a;https://arxiv.org/abs/2409.10516 本文的研究背景主要是为了解决 "具有长语境的大型语言模型&#xff08;LLM&#xff09;"问题。基于变换器的 LLM 被广泛应用于各个领域&#xff0c;但在处理长上下文时&#xff0c;其计算成本非常高。特…

电脑USB端口禁止软件有哪些?什么软件能指定USB端口禁用?分享四款好用软件!

想象一下&#xff0c;你正准备在办公桌上插入U盘&#xff0c;打算快速拷贝文件&#xff0c;突然系统蹦出一个警告&#xff1a;“这个USB端口已被禁用&#xff01;” 是不是感觉好像被一双隐形的手制止了&#xff1f; 其实&#xff0c;这双“隐形的手”就是专门为企业安全设计…

visionpro脚本

visionproToolBlock的脚本的优先级优于工具连线的优先级&#xff0c;一般是照着脚本的执行顺序进行执行对应的工具&#xff0c;最常用的是C#的高级脚本&#xff0c;C#的脚本如下分为5部分。 第一部分&#xff1a;主要是一些库的引用&#xff0c;对于有些类型不知道库的时候&…

vue2中字符串动态拼接字段给到接口

【设计初衷是用户可根据给定的字段进行准确描述】 实现功能&#xff1a; 1. 文本域内容串动态配置字段&#xff0c;以$ {英文}拼接格式给到接口。 &#xff08;传参如&#xff1a;$ {heat_status_code}正常&#xff0c;$ {wdy_temp}也正常&#xff01;&#xff09; 2. 编辑时根…

Instagram全面升级“青少年账号”保护措施,除了信息分类过滤,还应从根源加强内容审核

在持续多年的监管和诉讼压力下&#xff0c;作为社交网站的巨头&#xff0c;Instagram落实了“最严格的青少年用户保护法”。 Instagram 上所有未满 18 岁的用户都将被归为“青少年用户”&#xff0c;默认把账号设置为私密状态&#xff0c;自动实施多项防护措施&#xff0c;很多…

Vue3实战:使用 errorHandler 捕获全局错误

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 在 Vue3 中&#xff0c;app.config.errorHandler 是一个错误处理器&#xff0c;用于为应用内抛出的未捕获错误指定一个全局处理函数&#xff0c;它接收三个参数&#xff1a;错误对象、触发该错误的组件…

什么品牌超声波清洗机质量好?四大绝佳超声波清洗机品牌推荐!

在快节奏的现代生活中&#xff0c;个人物品的清洁卫生显得至关重要。眼镜、珠宝饰品、手表乃至日常餐厨用具&#xff0c;这些频繁接触的物品极易累积污渍与细菌。拿眼镜为例&#xff0c;缺乏定期清洁会让油渍与尘埃积累&#xff0c;进而成为细菌的温床&#xff0c;靠近眼睛使用…