The document discusses concurrency and synchronization in distributed computing. It provides an overview of Petr Kuznetsov's research at Telecom ParisTech, which includes algorithms and models for distributed systems. Some key points discussed are:
- Concurrency is important due to multi-core processors and distributed systems being everywhere. However, synchronization between concurrent processes introduces challenges.
- Common synchronization problems include mutual exclusion, readers-writers problems, and producer-consumer problems. Tools for synchronization include semaphores, transactional memory, and non-blocking algorithms.
- Characterizing distributed computing models and determining what problems can be solved in a given model is an important area of research, with implications for distributed system design.
The document discusses weakly supervised learning from video and images using convolutional neural networks. It describes using scripts as weak supervision for learning actions from movies without explicit labeling. Methods are presented for jointly learning actors and actions from scripts, and for action learning with ordering constraints. The use of CNNs for object and action recognition in images is also summarized, including work on training CNNs using only image-level labels without bounding boxes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and emphasizes that undefined behavior does not guarantee a predictable result. It concludes with a quiz to find bugs in a code sample and links to additional reading materials.
AddressSanitizer, ThreadSanitizer, and MemorySanitizer are compiler-based tools that detect bugs like buffer overflows, data races, and uninitialized memory reads in C/C++ programs. AddressSanitizer instruments loads and stores to detect out-of-bounds memory accesses. ThreadSanitizer intercepts synchronization calls to detect data races between threads. MemorySanitizer tracks initialized and uninitialized memory using shadow memory to find uses of uninitialized values. The tools have found thousands of bugs with low overhead. Future work includes supporting more platforms and languages and detecting additional bug classes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and quizzes the reader to find bugs in a code sample. It recommends resources for further reading on debugging techniques and thread sanitizers that can detect races and data races.
This document provides examples and snippets of code for MapReduce, Pig, Hive, Spark, Shark, and Disco frameworks. It also includes two sections of references for related papers and Disco documentation. The examples demonstrate basic MapReduce jobs with drivers, mappers, and reducers in Java, Pig and Hive queries, Spark and Shark table operations, and a Disco MapReduce job.
This document provides an overview of automated theorem proving. It discusses:
1) The history and background of automated theorem proving, from Hobbes and Leibniz proposing algorithmic logic to modern computer-based approaches.
2) The theoretical limitations of automated reasoning due to results like Godel's incompleteness theorems, but also practical applications like verifying mathematics and computer systems.
3) How automated reasoning involves expressing statements formally and then manipulating those expressions algorithmically, as anticipated by Leibniz centuries ago.
This document provides an overview of automated theorem proving. It discusses:
1) The history and background of automated theorem proving, from Hobbes and Leibniz proposing algorithmic logic to modern computer-based approaches.
2) The theoretical limitations of automated reasoning due to results like Godel's incompleteness theorems, but also practical applications like verifying mathematics and computer systems.
3) How automated reasoning involves expressing statements formally and then manipulating those expressions algorithmically, as anticipated by Leibniz centuries ago.
11. 仂亳从 于仂亢亟亠仆亳亶 仍仂于舒 P 于 仍仂于仂 T
i 仗仂亰亳亳 于仂亢亟亠仆亳 仍仂于舒 P 于 T T [i..] 仆舒亳仆舒亠 P
v 从仂仆亠 仗亳 亳亰 从仂仆 仄亠从仂亶 P
i 仗仂亰亳亳 于仂亢亟亠仆亳 仍仂于舒 P 于 T 仍亳 i 仆舒仂亟亳 于
仗仂亟亟亠亠于亠 v
仍亞仂亳仄: 仆舒亶亳 v, 仗亠亠亳仍亳 仍亳
11 / 70
12. 舒亶亳 于仂亢亟亠仆亳 P = an 于 T = banana
3
T[3..]$ = "nana$"
5
T[5..]$ = "na$"
1
na$
T[1..]$ = "banana$"
$
na
banana$
a
na
$
na
$
6
T[6..]$ = "a$"
$
2
4
T[2..]$ = "anana$"
T[4..]$ = "ana$"
亠仄: O(|P | + occ)
12 / 70
13. 仂亳从 仆舒亳弍仂仍亠亞仂 仂弍亠亞仂 仗仂亟仍仂于舒
舒仆 仍仂于舒 T 亳 S 仄仄舒仆仂亶 亟仍亳仆 n. 舒亶亳 仄舒从亳仄舒仍仆仂亠
仗仂 亟仍亳仆亠 仍仂于仂, 于仂亟亠亠 亳 于 T , 亳 于 S.
仂仆舒仍亟 仆, 1970: 亟仍 亠亠仆亳 亠弍亠 (n log n)
于亠仄亠仆亳
弌亳从仆亠 亟亠亠于 O(n) 于亠仄亠仆亳
13 / 70
22. 仂亳从 亟仂从仄亠仆仂于, 仂亟亠亢舒亳 仍仂于仂 P
舒仆 仍仂于舒 (亟仂从仄亠仆) T1 , T2 , . . . , Tm 仄仄舒仆仂亶 亟仍亳仆 n.
舒亶亳 亟仂从仄亠仆, 仂亟亠亢舒亳亠 仍仂于仂 P .
弍仂弍亠仆仆仂亠 弌 仂亟亠亢亳 亳从 仍仂于 T1 , T2 , . . . , Tm .
亳 仗仂从舒亠仆 于 m 于亠仂于.
v 从仂仆亠 仗亳 亳亰 从仂仆 仄亠从仂亶 P .
仂从仄亠仆 Ti 仂亟亠亢亳 P 于 仗仂亟亟亠亠于亠 v 亠 于亠 i
22 / 70
23. 仂从仄亠仆 T1 = banana, T2 = cane, T3 = bank, 仍仂于仂 P = an.
e#
e#
3
4
n cane#
3
na$
a
$
3
k@
1
T
5
ban ana$
1
k@
k@
a
4
1
n
2
e#
$
a
k@
6
na
$
2
$
2
4
23 / 70
24. 仂从仄亠仆 T1 = banana, T2 = cane, T3 = bank, 仍仂于仂 P = an.
4
6
2
4
2
2
1
1
1
3
5
3
3
4
24 / 70
25. 舒仆 仄舒亳于 于亠仂于 C 亟仍亳仆 n
亟舒 于亠 舒亰仍亳仆亠 亰仆舒亠仆亳 于 C[ , r]
P rev[k] 仗亠亟亟舒 亠亶从舒 仄舒亳于舒 C 于亠舒 C[k]
k [ , r] 仗亠于舒 亠亶从舒, 仂亟亠亢舒舒 于亠
C[k] P rev[k] <
舒从 仆舒仂亟亳 k [ , r] .. P rev[k] < ?
25 / 70
26. 舒亶亳 亠亶从 P rev[k] P rev[ , r] 仂亟亠亢舒 仄亳仆亳仄舒仍仆仂亠
亰仆舒亠仆亳亠 (O(1) 于亠仄亠仆亳)
仍亳 P rev[k] < , 于亟舒 C[k] 亳 亰舒仗亳 舒仍亞仂亳仄 亟仍
P rev[ , k 1] 亳 P rev[k + 1, r]
亠仄 舒弍仂 = O(从仂仍-于仂 于亠仂于)
26 / 70
27. 仂从仄亠仆 T1 = banana, T2 = cane, T3 = bank, 仍仂于仂 P = an.
e#
e#
4
n cane#
3
na$
3
a
$
3
k@
1
T
5
ban ana$
1
k@
k@
a
4
1
n
2
e#
$
a
k@
6
na
$
2
$
2
4
舒 仗仂亳从 亟仂从仄亠仆仂于, 仂亟亠亢舒亳 P , 亠弍亠 O(|P | + output)
于亠仄亠仆亳 亳 O(n) 仗舒仄亳
[ 从亳仆舒仆, 2002]
27 / 70
30. 亠从亳 1: 仗亠亟亠仍亠仆亳亠 亳 仗亳仍仂亢亠仆亳.
亠从亳 2: 仂仂亠仆亳亠.
[D. Breslauer, G. Italiano. Near real-time su鍖x tree construction
via the fringe marked ancestor problem. Best paper SPIRE 2011!]
亠从亳 3: 仂亞亟舒 亟亠亠于仂 磦仍磳 亳从仆仄?
30 / 70
33. T = banana
仍亞仂亳仄 亳亠舒 舒亶仆亠舒, 1973
$
$
na
a$
a$
na
na$
$
na
a
na
a
$
na
$
na$
$
na$
$
na
banana$
a
a
$
na
$
$
na
$
na
na
$
$
$
na
$
banan
an
an
banan
an
an
na
$
na
banana
an
an
a
$
na
bana
an
a
na
n
ban
an
na
n
ba
a
na
n
b
na
仍亞仂亳仄 亅从仂 丕从从仂仆亠仆舒, 1996
banana$
banana
a
na
$
na
$
$
O(1) 舒仄仂亳亰亳仂于舒仆仆仂亞仂 于亠仄亠仆亳 仆舒 弍从于!
33 / 70
46. 弌亳从仆亠 仍从亳 舒亶仆亠舒
Wn(u)
3
na
亠从舒 u 舒于仆舒 L, 仄亠从舒 v 舒于仆舒 aL
$
na
5
banana$
1
a
u
na
$
6
na
v
$
2
Wb(v)
Wa (u) = v, 亠仍亳 v
于亠亳仆舒
(亰亠仍亠 仍从亳)
Wa (u) 从仂仆亠 亠弍舒
仂亟亠亢舒亠亞仂 v, 亠仍亳 v
仗仂亰亳亳 仆舒 亠弍亠
(仆亠仗仂仗亠于亳亠 仍从亳)
4
44 / 70
47. 于舒 于仂亶于舒 亳从仆 仍仂从
仍亳 亟仍 于亠亳仆 u 仂仗亠亟亠仍亠仆舒 Wa (u), 仂 亳 亟仍 仍ミ頴笑覚 亠亠
仗亠亟从舒 v 仂仗亠亟亠仍亠仆舒 Wa (v)
仍亳 v = Wa (u), 亞亟亠 (u, v) 亰亠仍舒 仍从舒, 仂
depth(u) depth(v) 1
45 / 70
48. 仂弍舒于仍亠仆亳亠 T [i 1..]$. 弌仍舒亶 1.
T[i-1]
u
T[i..]$
V
T[i-1]
V
u
T[i-1..]$
T[i..]$
46 / 70
49. 仂弍舒于仍亠仆亳亠 T [i 1..]$. 弌仍舒亶 2.
T[i-1]
u'
u
T[i..]$
T[i-1]
u'
v'
v''
u
v'
v
v''
T[i-1..]$
T[i..]$
47 / 70
75. 亳亠舒舒
仆 舒亳仍亟. 弌仂从亳, 亟亠亠于 亳 仗仂仍亠亟仂于舒亠仍仆仂亳 于
舒仍亞仂亳仄舒.
Peter Weiner. Linear pattern matching algorithms.
Lucas Chi Kwong Hui. Color set size problem and applications to
string matching.
S. Muthu Muthukrishnan. E鍖cient Algorithms for Document
Retrieval Problems.
Dany Breslauer, Guiseppe Italiano. Near real-time su鍖x tree
construction via the fringe marked ancestor problem.
Tomohiro I, Shunsuke Inenaga, Hideo Bannai, Masayuki Takeda.
Inferring strings from su鍖x trees and links on a binary alphabet.
70 / 70